gpt4 book ai didi

java - 使用 sendBroadcast 并执行操作 "android.rfid.INPUT"

转载 作者:行者123 更新时间:2023-12-02 00:59:40 25 4
gpt4 key购买 nike

我是 Android 开发新手,正在尝试调试和理解在 Android 上运行的用于扫描条形码的应用程序。请参阅SotfScanService.java获取完整源代码。

以下方法应该将扫描的条形码数据发送到某处并附加后缀。但我不知道在哪里。我假设它发送到订阅该特定 Intent 的一个或多个应用程序。

  1. 有人可以解释一下下面执行 sendBroadcast() 时会发生什么吗?
  2. android.rfid.INPUT 是其他应用程序能够理解的标准操作吗?

我正在调试此应用程序,因为 Android 设备上的浏览器中运行的网页不会接收扫描的条形码作为 keydown/keypress 事件,并且仅在输入焦点时附加后缀不在文本框中。

SotfScanService.java:

private void sendToInput(String data , boolean enterFlag){
String result = getfixChar(data);


String append = getAppendChar();
switch (append) {
case "1":
enterFlag = true ;
break ;
case "2":
result += "\n";
break ;
case "3":
result += "\t";
break ;
case "4":

break ;
}

Intent toBack = new Intent() ;
toBack.setAction("android.rfid.INPUT") ;
toBack.putExtra("data", result );//发送添加前缀后缀的数据
toBack.putExtra("enter", enterFlag) ;
sendBroadcast(toBack) ;
}

最佳答案

  1. 发送广播

    在进行sendBroadcast之前,我们首先需要知道Broadcast是什么。是。 Android 应用程序可以从 Android 系统和其他 Android 应用程序发送或接收广播消息,类似于发布-订阅设计模式。当感兴趣的事件发生时,会发送这些广播。例如,Android系统会在各种系统事件发生时发送广播,例如系统启动或设备开始充电时。应用程序还可以发送自定义广播,例如,通知其他应用程序它们可能感兴趣的内容(例如,已下载一些新数据)。

    从代码的 GitHub 存储库中,我大致从头到尾浏览了一遍,它看起来像是一个涉及扫描某些东西(RFID?条形码?)的自动化应用程序。我已经注释掉了该方法之前和之后的流程,具体如下。

    private void sendToInput(String data , boolean enterFlag){

    //getfixChar(data): It gets and processes data which stored in SharedPreferences Strings,
    //namely prefix_config and suffix_config.
    //The return value will be the data with prefix and suffix (prefix + data + suffix)
    String result = getfixChar(data);

    //getAppendChar(): It get the String stored in SharedPreference, which is append_ending_char, with default value 4.
    //If there's no value stored in append_ending_char, it will return 4, and otherwise (1, 2, or 3)
    String append = getAppendChar();
    switch (append) {
    case "1":
    enterFlag = true ;
    break ;
    case "2":
    result += "\n";
    break ;
    case "3":
    result += "\t";
    break ;
    case "4":

    break ;
    }
    //After getting and processing all the values and stored in result and append respectively.
    //The values are stored in the Intent extra, namely data and enter.
    //It will be send via Broadcast
    Intent toBack = new Intent() ;
    toBack.setAction("android.rfid.INPUT") ;
    toBack.putExtra("data", result ) ;//发送添加前缀后缀的数据 //Translation: Sending data with prefix and suffix added
    toBack.putExtra("enter", enterFlag) ;
    sendBroadcast(toBack) ;
    }
  2. android.rfid.INPUT

    作者只是这样命名的,其他应用程序不知道它,除非其他应用程序接收到具有确切名称android.rfid.INPUT的相同广播。广播可以用作跨应用程序和正常用户流之外的消息系统,开发人员打算接收使用 ScanBroadcast 方法发送的广播。不应用代码,仅通过研究流程,我认为这是一种自动化方法,具体取决于从之前提到的 Intent 收到的结果。

  3. 最后但并非最不重要的一点是,我建议您将所有值打印到 logcat(调试控制台/终端)中,以便您知道哪一部分出了问题。

    例如:

    private void sendToInput(String data , boolean enterFlag){
    String result = getfixChar(data);
    Log.d("result", result);

    String append = getAppendChar();
    Log.d("append", append);
    switch (append) {
    case "1":
    enterFlag = true ;
    break ;
    case "2":
    result += "\n";
    break ;
    case "3":
    result += "\t";
    break ;
    case "4":

    break ;
    }
    //Last but not least, double check here.
    Log.d("result2", result);
    Log.d("enterFlag", enterFlag);
    Intent toBack = new Intent() ;
    toBack.setAction("android.rfid.INPUT") ;
    toBack.putExtra("data", result );//发送添加前缀后缀的数据
    toBack.putExtra("enter", enterFlag.toString()) ;
    sendBroadcast(toBack) ;
    }

    正如您所知,我没有输入设备以及扫描数据对象,所以这是我能提供的最大帮助。

关于java - 使用 sendBroadcast 并执行操作 "android.rfid.INPUT",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60850162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com