Java 如何将扫描结果从broadcastreceiver发送到服务

Java 如何将扫描结果从broadcastreceiver发送到服务,java,android,service,broadcastreceiver,wifimanager,Java,Android,Service,Broadcastreceiver,Wifimanager,我在服务类中创建了一个broadcastreceiver。 设置为对此操作作出反应:WifiManager.SCAN\u RESULTS\u AVAILABLE\u action 所以基本上每次我调用wifi.startScan(),当结果变为可用时,BroadcastReceive的onReceive方法完成了它的工作 我的问题是,我需要处理这些扫描结果,在广播接收机中做这么多可能不是好的做法。我想在我的服务类中进行所有计算,但我需要以某种方式访问扫描结果 有什么帮助吗?因为这是非常需要的 以

我在服务类中创建了一个broadcastreceiver。 设置为对此操作作出反应:WifiManager.SCAN\u RESULTS\u AVAILABLE\u action

所以基本上每次我调用wifi.startScan(),当结果变为可用时,BroadcastReceive的onReceive方法完成了它的工作

我的问题是,我需要处理这些扫描结果,在广播接收机中做这么多可能不是好的做法。我想在我的服务类中进行所有计算,但我需要以某种方式访问扫描结果

有什么帮助吗?因为这是非常需要的

以下是我的代码的简化版本,传达了我的广播接收器的用途:

我的服务类中的代码段:

IntentFilter i=newintentfilter();
i、 添加操作(WifiManager.SCAN\u RESULTS\u AVAILABLE\u ACTION)//对可用的扫描结果作出反应
注册接收者(mybroadcast,i);
wifi=(WifiManager)getSystemService(Context.wifi\u服务);
如果(!wifi.isWifiEnabled()){//wifi未启用
toast=toast.makeText(getApplicationContext(),“Wifi已关闭。请打开它。”,toast.LENGTH\u LONG);
toast.show();
//wifi.setWifiEnabled(true);
//起始触觉(背向意图);
}
其他的
{
wifi.startScan();//接收器将对什么做出反应
}
我的接收器代码:

private final BroadcastReceiver mybroadcast=new BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
//获取扫描结果
wifi=(WifiManager)mContext.getSystemService(Context.wifi\u SERVICE);
列表扫描=wifi.getScanResults();
//在这里做一些工作。。。
}
}

您可以尝试将处理程序添加到服务中,例如:

private final Handler handler = new Handler() {

    public void handleMessage(Message msg) {

        String aResponse = msg.getData().getString("message");

        if ((null != aResponse)) {

            // ALERT MESSAGE
            Toast.makeText(getBaseContext(),
                    "Server Response: " + aResponse, Toast.LENGTH_SHORT)
                    .show();
        } else {

            // ALERT MESSAGE
            Toast.makeText(getBaseContext(),
                    "Not Got Response From Server.", Toast.LENGTH_SHORT)
                    .show();
        }

    }
};
并在您的广播接收器的OnReceive中向其发送消息:

   Message msgObj = handler.obtainMessage();
   Bundle b = new Bundle();
   b.putString("message", msg);
   msgObj.setData(b);
   handler.sendMessage(msgObj);