Androidウェアアプリケーションを開発し、モバイルヘルパーアクティビティからアセットを渡そうとしています。私は資産を渡すための公式文書に従いました - Transferring Assets、しかし、onDataChanged
関数で渡された資産からビットマップを読み込もうとすると、次のエラーが発生します。このコードは、String
の値を渡すときに機能することに注意してください。コードは以下の通りである:wearサービスでblockingConnectを呼び出すと、IllegalStateExceptionが発生する
public Bitmap loadBitmapFromAsset(Bitmap bitmap, Asset asset) {
if (asset == null) {
throw new IllegalArgumentException("Asset must be non-null");
}
ConnectionResult result = mGoogleApiClient.blockingConnect(5000, TimeUnit.MILLISECONDS);
if (!result.isSuccess()) {
return null;
}
InputStream assetInputStream = Wearable.DataApi.getFdForAsset(mGoogleApiClient, asset).await().getInputStream();
mGoogleApiClient.disconnect();
if (assetInputStream == null) {
return null;
}
if (bitmap != null) {
bitmap.recycle();
bitmap = null;
}
bitmap = BitmapFactory.decodeStream(assetInputStream);
return bitmap;
}
私は取得していますエラーは以下の通りです:
java.lang.IllegalStateException:blockingConnectはcom.google.androidでUIスレッド で呼び出されてはなりませんcom.google.android.gms.common.api.internal.zzj.blockingConnect(不明なソース) ...
で.gms.common.internal.zzx.zza(不明なソース) 上の任意のアイデア因果関係これ?
ありがとうございましたが、私がやっていることです。ウォッチフェイスサービスは、DataApi.DataListener、GoogleApiClient.ConnectionCallbacks、およびGoogleApiClient.OnConnectionFailedListenerの各関数を実装しています。この問題は、onDataChanged関数が呼び出され(モバイルコンパニオンアプリの設定を変更した後)、渡されたアセットからビットマップをロードしようとしたときに発生します。私が使用している関数は、関連するドキュメントの同じ関数(loadBitmapFromAsset)です:http://developer.android.com/intl/ru/training/wearables/data-layer/assets.html – user501223