Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调整Android开发代码,以便通过蓝牙发送对象?_Android_Bluetooth - Fatal编程技术网

如何调整Android开发代码,以便通过蓝牙发送对象?

如何调整Android开发代码,以便通过蓝牙发送对象?,android,bluetooth,Android,Bluetooth,嗨,我需要通过蓝牙发送一个战舰级,用于我的战舰游戏。我试图编辑发送字符串的代码,但我真的不知道我在做什么。我的代码如下。我知道我需要在发送之前对对象进行串行化,但我只是得到了一些错误,我也将显示这些错误。先谢谢你 代码: 日志: 04-03 20:25:32.799:E/反序列化对象(30255):io错误 04-03 20:25:32.799:E/deserializeObject(30255):java.io.StreamCorruptedException 04-03 20:25:32.7

嗨,我需要通过蓝牙发送一个战舰级,用于我的战舰游戏。我试图编辑发送字符串的代码,但我真的不知道我在做什么。我的代码如下。我知道我需要在发送之前对对象进行串行化,但我只是得到了一些错误,我也将显示这些错误。先谢谢你 代码:

日志:

04-03 20:25:32.799:E/反序列化对象(30255):io错误 04-03 20:25:32.799:E/deserializeObject(30255):java.io.StreamCorruptedException 04-03 20:25:32.799:E/deserializeObject(30255):atjava.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:2369) 04-03 20:25:32.799:E/deserializeObject(30255):位于java.io.ObjectInputStream。(ObjectInputStream.java:433) 04-03 20:25:32.799:E/deserializeObject(30255):位于com.example.battleships.v2.ChatService$ConnectedThread.run(ChatService.java:292)

以及:

04-03 20:25:31.868:E/serializeObject(30255):错误 04-03 20:25:31.868:E/serializeObject(30255):java.io.NotSerializableException:com.example.battleships.v2.SetUpGame$FriendlyGrid 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1535) 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847) 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689) 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653) 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1143) 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:413) 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1241) 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575) 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847) 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689) 04-03 20:25:31.868:E/serializeObject(30255):位于java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653) 04-03 20:25:31.868:E/serializeObject(30255):位于com.example.battleships.v2.ChatService$ConnectedThread.writeObj(ChatService.java:333) 04-03 20:25:31.868:E/serializeObject(30255):位于com.example.battleships.v2.ChatService.writeObj(ChatService.java:86) 04-03 20:25:31.868:E/serializeObject(30255):位于com.example.battleships.v2.SetUpGame$3.onClick(SetUpGame.java:119) 04-03 20:25:31.868:E/serializeObject(30255):在android.view.view.performClick(view.java:2533) 04-03 20:25:31.868:E/serializeObject(30255):在android.view.view$PerformClick.run(view.java:9320) 04-03 20:25:31.868:E/serializeObject(30255):位于android.os.Handler.handleCallback(Handler.java:587) 04-03 20:25:31.868:E/serializeObject(30255):位于android.os.Handler.dispatchMessage(Handler.java:92) 04-03 20:25:31.868:E/serializeObject(30255):位于android.os.Looper.loop(Looper.java:150) 04-03 20:25:31.868:E/serializeObject(30255):位于android.app.ActivityThread.main(ActivityThread.java:4385) 04-03 20:25:31.868:E/serializeObject(30255):位于java.lang.reflect.Method.Invokenactive(本机方法) 04-03 20:25:31.868:E/serializeObject(30255):位于java.lang.reflect.Method.invoke(Method.java:507) 04-03 20:25:31.868:E/serializeObject(30255):位于com.android.internal.os.ZygoteInit$methodAndArgscaler.run(ZygoteInit.java:849) 04-03 20:25:31.868:E/serializeObject(30255):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 04-03 20:25:31.868:E/serializeObject(30255):位于dalvik.system.NativeStart.main(本机方法)

您的对象以及它的字段都需要。 如果您不关心(某些)字段,可以使用
transient
关键字

例如:

class House implements Serializable{

    private int numberOfWindows; //No problem here

    private Roof myRoof; //The Roof class should implement Serializable as well!

    private transient Door myFrontDoor; //The Door class doesn't need to implement Serializable, it will be ignored.

}

请参阅。

是的,我的ship类在变量中实现序列化?他们也需要实现串行?我感谢Niek的帮助。这个类是deffo实现的serializable,我想传输所有字段,所以没有临时字段
class House implements Serializable{

    private int numberOfWindows; //No problem here

    private Roof myRoof; //The Roof class should implement Serializable as well!

    private transient Door myFrontDoor; //The Door class doesn't need to implement Serializable, it will be ignored.

}