Hello使用BluetoothChat示例来与arduino通信。到目前为止,一切都正常工作,现在我希望访问sendMessage()方法,以便能够发送数据,而不是从主类发送数据,而是从我创建的另一个类发送数据。下面是BluetoothChat在BluetoothChat.java中的发送函数
private void sendMessage(String message) {
// Check that we're actually connected before trying anything
if (mChatService.getState() != BluetoothChatService.STATE_CONNECTED) {
Toast.makeText(this, R.string.not_connected, Toast.LENGTH_SHORT).show();
return;
}
// Check that there's actually something to send
if (message.length() > 0) {
// Get the message bytes and tell the BluetoothChatService to write
byte[] send = message.getBytes();
mChatService.write(send);
// Reset out string buffer to zero and clear the edit text field
mOutStringBuffer.setLength(0);
mOutEditText.setText(mOutStringBuffer);
}
}现在我想从我的Config.java上访问它。以下是我迄今所做的工作。我将私有的void sendMessage改为public,并且在Config.java ive中添加了以下内容:
BluetoothChat firstClass = new BluetoothChat();在onCreate中这个
firstClass.sendMessage("test");虽然当im切换到Config.java活动时我没有收到任何错误,但是应用程序崩溃了。
有人能帮我吗?谢谢!
逻辑猫
10-08 22:49:15.125: D/dalvikvm(1541):GC_EXTERNAL_ALLOC释放98K,47%释放2962K/5511 K,外部3943K/4883K,暂停23ms 10-08 22:49:15.128: d/蓝牙套接字(1541):套接字已在关闭state:android.bluetooth.BluetoothSocket@40535c88 10-08 22:49:15.128: d/蓝牙套接字(1541):套接字已在关闭state:android.bluetooth.BluetoothSocket@40523b10 10-08 22:49:15.296: e/蓝牙down (1541):- ON STOP 10-08 22:49:20.585: D/AndroidRuntime(1541):关闭VM 10-08 22:49:20.585: W/dalvikvm(1541):threadid=1:线程退出未明异常(group=0x40015578) 10-08 22:49:20.589: E/AndroidRuntime(1541):致命例外:主10-08 22:49:20.589: E/AndroidRuntime(1541):java.lang.NullPointerException 10-08 22:49:20.589: E/AndroidRuntime(1541):at group=0x40015578 10-08 22:49:20。589: E/AndroidRuntime(1541):com.example.android.BluetoothChat.Config.onItemSelected(Config.java:45) 10-08 22:49:20.589: E/AndroidRuntime(1541):android.widget.AdapterView.fireOnSelected(AdapterView.java:871) 10-08 22:49:20.589: E/AndroidRuntime(1541):android.widget.AdapterView.access$200(AdapterView.java:42) 10-08 22:49:20.589: E/AndroidRuntime(1541)::android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:837) 10-08 22:49:20.589: E/AndroidRuntime(1541):android.os.Handler.handleCallback(Handler.java:587) 10-08 22:20.589: E/AndroidRuntime(1541):android.os.Handler.dispatchMessage(Handler.java:92) 10-08 22:49:20.589: E/AndroidRuntime(1541):android.os.Looper.loop(10-08 22:49:20.589: E/AndroidRuntime(1541):android.app.ActivityThread.main(ActivityThread.java:3687) 10-08 22:49:20.589: E/AndroidRuntime(1541):java.lang.reflect.Method.invokeNative(原生方法) 10-08 22:49:20.589: E/AndroidRuntime(1541):java.lang.reflect.Method.invoke(Method.java:507) 10-08 22:49:20.589: e/AndroidRuntime(1541年):com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 10-08 22:49:20.589: E/AndroidRuntime(1541):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 10-08 22:49:20.589: E/AndroidRuntime(1541):dalvik.system.NativeStart.main(原生方法)
发布于 2012-10-08 23:28:09
BluetoothChat类是一个活动。活动对象由Android管理(创建、onCreate、onResume和其他方法被调用)。
所以,你不能做这样的事:
BluetoothChat firstClass = new BluetoothChat();有几种方法可以重用此功能
( a)从BluetoothChat复制并粘贴到Config (让我们暂时忘记代码复制)。
您需要从onCreate、onStart和其他管理mBluetoothAdaptor方法的方法中复制代码。
b)如果要同时保留BluetoothChat活动和Config活动,可以将可重用代码移动到某个助手类(这不是活动),并从这两个活动中使用它。
我建议阅读一些关于活动及其生命周期的内容,因为如果没有这些知识,就很难开发任何android应用程序。
发布于 2012-10-09 03:20:31
你需要线程或AsyncTask通过蓝牙从安卓发送蚂蚁信息。参见这个简单的示例:http://english.cxem.net/arduino/arduino5.php
https://stackoverflow.com/questions/12790419
复制相似问题