养乐多滋滋滋 2024-06-12 08:30 采纳率: 89.5%
浏览 2
已结题

安卓,使用扫描器,扫出来的结果,如何在前台界面显示

扫码枪扫出来的值,如何在前台界面显示

img


图上是扫出来的结果,如何在前台显示

 public void onData(ScanDataCollection scanDataCollection) {
        if ((scanDataCollection != null) && (scanDataCollection.getResult() == ScannerResults.SUCCESS)) {
            ArrayList <ScanData> scanData = scanDataCollection.getScanData();
            for(ScanData data : scanData) {
                updateData("<font color='gray'>" + data.getLabelType() + "</font> : " + data.getData());
                Log.i("data.getData()扫码回码的数据是",data.getData());
                Log.i("data.getLabelType()扫码回码的类型是", String.valueOf(data.getLabelType()));

                //判断扫描的是什么类型的码
                String s  = scanData.toString();
                if(s.equals("U01|")){//用户名条码
                    return;
                }
                if(!(s.equals("-"))&&!(s.equals("|"))){//任务条码CODE128,共12位数据,10位数据2位校验码

                }

//                User user=new User();
//                user.input.id="2";
//                user.input.name=data.getLabelType() +":"+data.getData();

                //**********For Jin Begin**********
//                Json json = new Json();
//                json.input.id="175";
//                json.input.FLAG=data.getLabelType() +":"+data.getData();
//                json.input.USER=data.getLabelType() +":"+data.getData();
//                json.input.S0=data.getLabelType() +":"+data.getData();
//                json.input.CNT1=data.getLabelType() +":"+data.getData();
//                json.input.CNT2=data.getLabelType() +":"+data.getData();

//                json.input.id="175";
//                json.input.FLAG="12";
//                json.input.USER="1";
//                json.input.S0="";
//                json.input.CNT1="0";
//                json.input.CNT2="0";
                //**********For Jin end**********



                new Thread(new Runnable() {
                    @Override
                    public void run() {

//                        OkHttpUtils builder = OkHttpUtils
//                                .builder();
////                        builder.url("http://192.168.10.254:18081/");
//                        //**********For Jin Begin**********
//                        builder.url("http://192.168.10.254:18081/MSG");
//                        //**********For Jin end**********
//                        builder.AddHeader("content-type", "application/json;charset=UTF-8");
////                        builder.post(user);
//                        //**********For Jin Begin**********
//                        builder.post(json);
                        OkHttpClient client = new OkHttpClient().newBuilder().build();
                        MediaType mediaType = MediaType.parse("application/json");
                        RequestBody body = RequestBody.create(mediaType,
                                "{\r\n    \"ID\" : 10242," +
                                        " \r\n    \"FLAG\" : 12," +
                                        " \r\n    \"USER\" : 1," +
                                        " \r\n    \"S0\" : \"\"," +
                                        "\r\n    \"CNT1\" : 0," +
                                        "\r\n    \"CNT2\" : 0" +
                                        "\r\n}");
                        Request request = new Request.Builder()
                                .url("http://192.168.10.10:18081/MSG")
                                .method("POST", body)
                                .addHeader("Content-Type", "application/json")
                                .build();
                        Response response = null;
                        try {
                            response = client.newCall(request).execute();
                        } catch (IOException e) {
                            throw new RuntimeException(e);
                        }
                        String responseData = null;
                        try {
                            responseData = response.body().string();
                        } catch (IOException e) {
                            throw new RuntimeException(e);
                        }
                        Log.w("回码数据--------------------------------》",responseData);

                        // 使用Handler将响应数据发送到主线程
                        Message message = mHandler.obtainMessage();
                        message.what = 0;
                        message.obj = responseData;
                        mHandler.sendMessage(message);
                        //**********For Jin end**********
//                        builder.async(new OkHttpUtils.ICallBack() {
//                            @Override
//                            public void OnSuccessful(Call call, String data) {
//                                updateData(data);
//                            }
//
//
//                            @Override
//                            public Void OnFailure(Call call, String data) {
//                                return null;
//                            }
//                        });
                    }
                }).start();
            }
        }
    }

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-06-12 08:30
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    要在安卓应用的前台界面上显示通过扫描器扫描得到的二维码或条形码的数据,你可以使用TextView控件来显示数据。首先,确保你的Activity中有一个TextView控件,然后在onData方法中更新这个TextView的内容。

    以下是一些关键步骤和代码示例,帮助你实现这个功能:

    1. 定义TextView控件:在你的布局XML文件中定义一个TextView,比如命名为textViewDataDisplay
    <TextView
        android:id="@+id/textViewDataDisplay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="扫描结果将显示在这里"
        android:textSize="18sp" />
    
    1. 在Activity中引用TextView:在你的Activity中引用这个TextView
    TextView textViewDataDisplay;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_layout);
    
        textViewDataDisplay = findViewById(R.id.textViewDataDisplay);
    }
    
    1. 更新TextView内容:在onData方法中,使用updateData方法更新TextView的内容。
    public void onData(ScanDataCollection scanDataCollection) {
        // ... 省略其他代码 ...
    
        for(ScanData data : scanData) {
            // 更新TextView显示扫描数据
            String displayText = "<font color='gray'>" + data.getLabelType() + "</font> : " + data.getData();
            textViewDataDisplay.setText(Html.fromHtml(displayText));
    
            // ... 省略其他代码 ...
        }
    }
    

    注意:setText方法中的Html.fromHtml用于解析HTML标签,如果你的文本中包含HTML标签,可以使用这个方法来正确显示它们。如果不需要HTML标签,可以直接使用textViewDataDisplay.setText(displayText);

    1. 处理不同数据类型:根据扫描到的数据类型,你可以在onData方法中添加更多的逻辑来执行不同的操作。

    2. 异步处理和UI更新:你的代码示例中已经使用了线程来处理网络请求,这是正确的做法,因为网络请求不应该在主线程中执行。使用Handler来更新UI是一个好的实践。

    3. 错误处理:确保你的代码中有适当的错误处理逻辑,比如网络请求失败时给用户适当的反馈。

    关于参考资料,你可以查看以下链接:

    这些资源将帮助你更好地理解如何在Android应用中处理UI更新和网络请求。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月20日
  • 已采纳回答 6月12日
  • 创建了问题 6月12日

悬赏问题

  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
  • ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
  • ¥15 LLM accuracy检测
  • ¥15 pycharm添加远程解释器报错
  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口
  • ¥15 如何能达到用ping0.cc检测成这样?如图
  • ¥15 关于#DMA固件#的问题,请各位专家解答!
  • ¥15 请问华为OD岗位的内部职业发展通道都有哪些,以及各个级别晋升的要求