Java 从类到活动的数据传递问题
机器人新手! 基本上,我试图为我的产品制作一个基于BT SPP协议的专有应用程序! 所以我决定使用一个类来处理来自bt设备的传出/传入数据的bt服务 发送数据没问题! 但是,当我尝试接收数据时,无法调用/接收活动类内的数据 这是我的代码片段 BTSpp.javaJava 从类到活动的数据传递问题,java,android,bluetooth,spp,Java,Android,Bluetooth,Spp,机器人新手! 基本上,我试图为我的产品制作一个基于BT SPP协议的专有应用程序! 所以我决定使用一个类来处理来自bt设备的传出/传入数据的bt服务 发送数据没问题! 但是,当我尝试接收数据时,无法调用/接收活动类内的数据 这是我的代码片段 BTSpp.java BluetoothSPP bt=new BluetoothSPP(this); //initialized {...} bt.setOnDataReceivedListener(new BluetoothSPP.OnDataRecei
BluetoothSPP bt=new BluetoothSPP(this); //initialized
{...}
bt.setOnDataReceivedListener(new BluetoothSPP.OnDataReceivedListener() {
@Override
public void onDataReceived(byte[] data, String message) {
Log.d(TAG, "onDataReceived() returned: " );
Log.i(TAG, "onDataReceived: "+message);
Log.i(TAG, "onDataReceived: "+data);
processIncomingdata(message);
}
});
DataReceivedListener上的公共接口{
public void onDataReceived(字节[]数据,字符串消息);///用于将数据发送回活动
}
...
//这未执行,因为接收数据时日志未运行
公共无效设置OnDataReceivedListener(OnDataReceivedListener侦听器){
d(“TAG”,“setOnDataReceivedListener()返回:”);
if(null==mDataReceivedListener)
mDataReceivedListener=监听器;
}
...
//下面是从bt服务读取数据的代码段,以及
//每当我从spp设备接收数据时,它都会显示日志
案例BluetoothState.MESSAGE_读取:
字节[]readBuf=(字节[])msg.obj;
String readMessage=新字符串(readBuf);
如果(readBuf!=null&&readBuf.length>0){
if(mDataReceivedListener!=null){
Log.d(“TAG”,“handleMessage()返回:”+mDataReceivedListener);//执行
mDataReceivedListener.onDataReceived(readBuf,readMessage);}
}
打破
而在我的活动窗口中,onCreate方法
根本不执行这个方法
MainActivity.java
BluetoothSPP bt=new BluetoothSPP(this); //initialized
{...}
bt.setOnDataReceivedListener(new BluetoothSPP.OnDataReceivedListener() {
@Override
public void onDataReceived(byte[] data, String message) {
Log.d(TAG, "onDataReceived() returned: " );
Log.i(TAG, "onDataReceived: "+message);
Log.i(TAG, "onDataReceived: "+data);
processIncomingdata(message);
}
});
也许这个函数不是从服务类调用的。我简直找不到任何线索!
谁能给我一些建议
提前谢谢你 这里有什么问题?我觉得你的代码很好。这未执行,因为接收数据时日志未运行?当然,当调用
MainActivity.java
中的方法时,它正在运行。感谢您的回复!是的,其他所有使用这种回调方法的方法都可以,除了这个!bt.setOnDataReceivedListener(新BluetoothSPP.OnDataReceivedListener(){}据我所知,这是从服务类默认调用的!但不是执行的!…据我所知,这是从服务类默认调用的…这是完全错误的。为什么它会被服务默认调用。您需要显示更多代码,特别是您的服务类,以便我们了解真正发生的情况。下面是服务库的原始源代码!这是我的源代码--onDataReceived()
是否被调用?如果不是,则肯定是BluetoothState中出现了错误。消息\u READ
。