2016-05-20 15 views
0

スマートフォンとスマートウォッチの間でメッセージapiを使用してメッセージを送信しています。バイト配列だけをデータとして送ることができるので、オブジェクトをバイト配列に変換して、受信中に変換を送信したり、逆変換したりしたいと思います。アンドロイドオブジェクトをバイト配列に変換して戻す方法は?

私はインターネットから入手した以下のコードを使用しています。しかし、私はjava.io.NotSerializableExceptionを取得しています。それを行うためのより良い方法はありますか?

私のオブジェクトには文字列値とアンドロイドバンドルがあります。どちらも、あるデバイスから送信され、もう一方のデバイスで受信される必要があります。

public static byte[] toByteArray(Object obj) throws IOException { 
     byte[] bytes = null; 
     ByteArrayOutputStream bos = null; 
     ObjectOutputStream oos = null; 
     try { 
      bos = new ByteArrayOutputStream(); 
      oos = new ObjectOutputStream(bos); 
      oos.writeObject(obj); 
      oos.flush(); 
      bytes = bos.toByteArray(); 
     } finally { 
      if (oos != null) { 
       oos.close(); 
      } 
      if (bos != null) { 
       bos.close(); 
      } 
     } 
     return bytes; 
    } 

public static Event toObject(byte[] bytes) throws IOException, ClassNotFoundException { 
     Event obj = null; 
     ByteArrayInputStream bis = null; 
     ObjectInputStream ois = null; 
     try { 
      bis = new ByteArrayInputStream(bytes); 
      ois = new ObjectInputStream(bis); 
      obj = (Event) ois.readObject(); 
     } finally { 
      if (bis != null) { 
       bis.close(); 
      } 
      if (ois != null) { 
       ois.close(); 
      } 
     } 
     return obj; 
    } 
+0

オブジェクトはシリアライズ可能ですか?あなたのメソッドに代わりに 'Serializable obj'を受け取らないようにしてください。 – Budius

+0

ここをクリックしてください:http://stackoverflow.com/questions/2836646/java-serializable-object-to-byte-array – Konstantin

+0

リンクをありがとうございました。 ApacheUtilsを使用して私のために働いた: シリアル化する: バイト[] data = SerializationUtils.serialize(yourObject); deserialize: YourObject yourObject =(YourObject)SerializationUtils.deserialize(byte [] data) – NewOne

答えて

0
public void toByteArray(Object obj) throws IOException { 
    FileOutputStream outputstream = new FileOutputStream(new File("/storage/emulated/0/Download/your_file.bin")); 
    outputstream.write((byte[]) obj); 
    Log.i("...","Done"); 
    outputstream.close(); 
} 

これは、それはあなたのために働くだろうが、それはあなたのスマートフォンにダウンロードフォルダにファイルを保存します試してみてください。

関連する問題