android - 在摩托罗拉 TC55 上获得扫描的值(value)

标签 android android-intent barcode-scanner android-broadcast motorola

我想在我的应用程序中扫描条形码。我可以开始扫描,但我不知道如何检测扫描值。我的代码看起来像

public class MyFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.pick, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        // scan
        this.getActivity().findViewById(R.id.scan).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                // Start the scanner like in the example:  https://developer.motorolasolutions.com/docs/DOC-1874#PROGRAMMING%20INTERFACE                    Intent intent = new Intent();
                intent.setAction("com.motorolasolutions.emdk.datawedge.api.ACTION_SOFTSCANTRIGGER");
                intent.putExtra("com.motorolasolutions.emdk.datawedge.api.EXTRA_PARAMETER", "TOGGLE_SCANNING");
                view.getContext().sendOrderedBroadcast(intent, null, receiver, null, 0, null, null);
            }
        });
    }

    private BroadcastReceiver receiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // How to detect the scanned value???       
        }
    }
}

最佳答案

我可以解决它。这是代码。

Intent intent = new Intent();
intent.setAction("com.motorolasolutions.emdk.datawedge.api.ACTION_SOFTSCANTRIGGER");
intent.putExtra("com.motorolasolutions.emdk.datawedge.api.EXTRA_PARAMETER", "TOGGLE_SCANNING");
getActivity().sendBroadcast(intent);

getActivity().registerReceiver(new BroadcastReceiver() {

    @Override        
    public void onReceive(Context context, Intent intent) {                
        String code = intent.getExtras().getString("com.motorolasolutions.emdk.datawedge.data_string");

        // do something

        getActivity().unregisterReceiver(this);
    }
}
, new IntentFilter("MyIntentAction"));

DataWedge 中的配置文件必须通过 Intent 启用输出并禁用击键输出。因为 Intent 操作是设置一个 String"MyIntentAction" 相同。然后我扫描后直接在我的Fragment中获取扫描的条码。

关于android - 在摩托罗拉 TC55 上获得扫描的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22863637/

相关文章:

Android 完全强制退出应用程序

javascript - 电话间隙 3.0.0 : BarcodeScanner Plugin

android - 扩展 AppCompatEditText 时无法显示键盘

android - Spritefont 文件未加载 Monogame Xamarin

android - 为什么要在 Android 中使用 fragment ?

android - Ionic Creator + Cordova 条码扫描器写入 : false

android - 实现条码扫描仪

Android - 独立的应用程序和测试项目?

android - 哪种方法我应该采用 1 个接收器和 10 个滤波器或 10 个接收器和 1 个滤波器

android - 使用 Intent 在 Android Eclipse 中上传文件的任何示例代码