Как запустить сканер штрих-кода из исходников ZXing на Java, Android?

Я только что сделал приложение, используя сканер штрих-кода (ZXing 1.7). Пользователь не использует сканер штрих-кода на своем телефоне, поэтому я не могу добавить внешний сканер штрих-кода в свое приложение. Я добавил исходники ZXing в свой проект, но я не знаю, как я могу выполнить его без намерений. Пожалуйста помогите.

Обновление: или как я могу сделать так, чтобы внешний сканер штрих-кода автоматически устанавливался вместе с моим приложением?


person user1078760    schedule 04.01.2012    source источник
comment
Я улучшу его как можно скорее, но теперь я в замешательстве, пожалуйста, дайте мне идею!   -  person user1078760    schedule 04.01.2012


Ответы (3)


Вы не можете установить внешний сканер штрих-кода для автоматической установки. Что вы можете сделать, так это проверить, установлено ли оно, и если нет, показать диалоговое окно, спрашивающее пользователя, хотят ли они его установить (это приведет пользователя к ссылке на рынок приложений).

Если вы хотите избежать этого, вы можете напрямую интегрировать библиотеку ZXing, но это потребует дополнительной работы. Приложение сканера штрих-кода имеет открытый исходный код, поэтому вы можете увидеть, как это сделать.

person JJJ    schedule 04.01.2012
comment
У меня есть, и они предоставляют намерение интеграции, используйте это. прочитайте документацию в этом файле, и она расскажет вам, как именно сделать то, что @JJJ только что сказал. - person Kaediil; 04.01.2012

Если сканер штрих-кода zxing установлен на мобильном телефоне, это очень просто:

Intent intent = new Intent(
                                "com.google.zxing.client.android.SCAN");
                        intent.putExtra("SCAN_MODE", "PRODUCT_MODE");//for Qr code, its "QR_CODE_MODE" instead of "PRODUCT_MODE"
                        intent.putExtra("SAVE_HISTORY", false);//this stops saving ur barcode in barcode scanner app's history
                        startActivityForResult(intent, 0);

и в OnActivityResult:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                    String contents = 

data.getStringExtra("SCAN_RESULT"); //this is the result
    }
else if (resultCode == RESULT_CANCELED) {

         // Handle cancel

}

Если он не установлен: вы можете поместить этот код в блок try-catch и перехватить исключение, вы можете сделать это:

Uri marketUri = Uri
                                .parse("market://details?id=com.google.zxing.client.android");
                        Intent marketIntent = new Intent(Intent.ACTION_VIEW,
                                marketUri);
                        startActivity(marketIntent);

Таким образом, он перенаправляет приложение на рынок Android, и ваше приложение продолжает работать один раз, если установлен сканер штрих-кода.

Если вы не хотите использовать другое приложение в своем приложении, вам нужно загрузить библиотеку zxing и попробовать использовать классы из файла core.jar (он создан с помощью apache ant). Следуйте этому руководству, чтобы сделать это: http://code.google.com/p/zxing/wiki/GettingStarted

person Seshu Vinay    schedule 31.01.2012

Просто используйте предоставленный код интеграции на основе намерений. Это очень легко. Он отправит пользователя в Маркет для загрузки приложения. Это намного лучше, чем пытаться установить его автоматически по крайней мере по трем причинам. Во-первых, я не думаю, что пользователи ожидают, что приложения будут устанавливать другие приложения, и, вероятно, им это не нравится. Во-вторых, это может работать только в том случае, если пользователь настроил устройство на разрешение сторонних приложений из-за пределов Market. Наконец, вы будете устанавливать потенциально старую версию.

person Sean Owen    schedule 04.01.2012