微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么广播接收器的服务类内部的调用方法会使我的功能无法正常工作?

如何解决为什么广播接收器的服务类内部的调用方法会使我的功能无法正常工作?

我需要帮助。 我在公寓里有一个管理家庭自动化系统服务器的服务,在内部,我使用了一个蓝牙库,该库将远程到达的数据发送到系统。一切正常。现在,我需要插入计时器,并使用广播接收器,它们在设置的时间将命令发送到我的service_server类,该类通过蓝牙将其发送到系统。 数据正确到达了蓝牙数据发送函数内部,但随后给了我一个错误“试图在空对象引用上调用虚拟方法'int app.akexorcist.bluetotohspp.library.BluetoothService.getState()'”。我一直在努力使其工作几天。希望对您有所帮助。

所以我初始化了库

         public class Service_Server extends Service {
         BluetoothSPP bt = new BluetoothSPP(this); 

这是我的广播接收器类

     public class broadcast_irr_balcone_ON extends broadcastReceiver {

     public void onReceive(Context context,Intent arg1) {
     str_comando = Codici_Comandi_Impianto.stringa_comando("irrigazione balcone on");

     Handler h = new Service_Server().new MyHandler();
     new Service_Server().new MyThread(h).invia_a_impianto(str_comando);
    }
  }    

这是service_server类中的线程,其中包含我从broadcastreceiver类调用函数

     public class MyThread extends Thread {

   Server server = new Server();
   Kryo kryo = server.getKryo();

    public Handler handler;                                                                      
    public MyThread(Handler handler) {
        this.handler = handler;
    }
     public  void invia_a_impianto(String invia) {
        Message msg = handler.obtainMessage();
        Bundle b = new Bundle();
        b.putString("msg da server verso impianto",invia);
        msg.setData(b);
        handler.sendMessage(msg);
    }
}

这是通过“ bt.send”函数接收所有信息的处理程序,该错误提示了我

     public  class MyHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {
        Bundle bundle = msg.getData();
        if (bundle.containsKey("msg da server verso impianto")) {
            String msgin = bundle.getString("msg da server verso impianto");
            System.out.println("handler per i messaggi in uscita verso l'impianto: " + msgin);
            String dati = (  msgin  );
            
            try {

                text_server_msg_ric.setText(dati);
                text_ADK_msg_ric.setText(dati);

                if (BT_connesso == true){
                   bt.send(dati,true);
                    String save_bt_data = dati.substring(1,dati.length()-1);
                    archivio_dati(save_bt_data);
                    Toast.makeText(getApplicationContext(),"msg handler"+ dati,Toast.LENGTH_SHORT).show();
                } else { Toast.makeText(getApplicationContext(),"impianto non connesso al server",Toast.LENGTH_SHORT).show(); }

            }catch (Exception e) {
                e.printstacktrace();
            }

        }
        else if (bundle.containsKey("nuovo utente collegato")) {
            try {
            lista_utenti();
            }catch (Exception e) {
                e.printstacktrace();
            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。