Xamarin.Android で Android の Service を作る・使う方法は、
に情報があります。
また、サンプルプログラムが、
にあります。
Android Service の .aidl
を使う方法については、
このあたりが参考になるかと思います。
最後に、Android-Java の Parcelable
の実装方法は、Xamarin.Android では以下のようになります。
サービス周りは複雑なので、まずは .aidl
を使わない Android-Java 製の Service に、Xamarin.Android から接続できるかなど、簡単そうなところから試された方が良いと思います。
2017.2.22 追記
これは、そもそも「デシリアライズ」の仕方がわかってないだけのような気もしますが。
Exceptionは戻そうとしても送信側で詰め込んだ型が見つからないよ。という事だとは思うのですが。。。
その通りでした。一部私も気づかなかったところがあったので追記します。
JavaでParcelable
を実装したクラス(Card.java
とします)をシリアライズし、Xamarin.Androidで、IParcelable
を実装したクラス(Card.cs
)でデシリアライズはできません。Xamarin.Androidはビルド時にmdXXXXXXXX.Card
というJavaのクラスを生成しますが、名前空間などが元々のCard.java
と一致しないなど、両者に互換性がありません。
つまりXamarin.AndroidでIPercelable
やISerializable
を実装したクラスは、Javaと相互運用性がありません。
ではどうするかというと、Javaのバインディングライブラリを作成するしかなさそうです。
具体的には、Card.java
をJava側でアプリとは別のJARライブラリとして切り出し(Card.jar
とします)、Xamarin.Android側でJavaバインディングプロジェクトを作成して、Card.jar
を取り込みます。
このJavaバインディングプロジェクトを参照したアプリプロジェクトであれば、Card.java
をシリアライズしたデータをデシリアライズ可能と思います。
本来なら試してから回答すべきですが、取り急ぎ情報共有のため追記しました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/22 05:19
2017/02/22 05:58
2017/02/22 10:11
2017/02/22 15:21
2017/02/23 09:09
2017/02/23 09:32
2017/02/23 10:35