私のアクティビティクラスのDrawingCacheから作成されたビットマップをAIDLサービスに渡そうとしています。しかし、それはサービスに渡されません。私のサービスのstoreImageメソッドでさえ、ログを出力しません。リソースから任意のビットマップ(png)を取り出し、それを自分のアクティビティからAIDLサービスに渡すと、動作します。アクティビティからAIDLサービスにビットマップを渡すことができません
いくつかの制限のため、私はWRITE_EXTERNAL_STORAGE権限をアクティビティクラスに追加できません。そのため、このビットマップをサービスに渡してSdcardに保存しています。一時的に私のアクティビティにこの権限を追加し、アクティビティクラスにのみプロセスを保存すると、イメージが適切に保存されます。しかし、このイメージをリソースフォルダに入れてAIDLサービスに送ると、storeImageメソッドは呼び出されません。
このコードはほとんどのデバイスで動作しますが、動作しないものはほとんどありません。これは、view.getDrawingCache()を使用して作成されたビットマップが間違っていますか?ここで
は、コードブロックです:
view.buildDrawingCache();
bitmap = view.getDrawingCache();
//This code block sends the bitmap to the service
if (logProvider != null && logProvider.isServiceRunning()) {
logProvider.storeBitmap(bitmap);
}
ビットマップをスケーリングすることはやりました。私はそれがビットマップのサイズだと思う。したがって、私の場合、リモートサービスにビットマップを送信することにはいくつかのサイズ制限があると結論づけることができます。現在、コードはサムスンのタブレットでも動作しています。ここで私はどうしたのですか?bitmap = Bitmap.createScaledBitmap(bitmap、bitmap.getWidth()/ 2、bitmap.getHeight()/ 2、true); – Gaurav
あなたがIPCをやっているなら、いくつかのサイズ制限があります。また、いくぶん遅くなる可能性があり、代わりにpng圧縮画像を転送することをお勧めします。また、IPCのサイズ制限にぶつからないように、常にイメージデータをチャンクで送信することができます。 – harism
@Gryry interesting ...応答してくれてありがとう – Rich