2016-04-04 15 views
3

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(不明なソース) 上の任意のアイデア因果関係これ?

答えて

5

最終的に解決策は、実行可能ファイルでloadBitmapFromAssetを実行することでした。なぜ私がこれを早く理解しなかったのか分からない...同様の投稿を見つけられなかったので、うまくいけば誰かを助けるだろう。

new Thread(new Runnable() { 
    @Override 
    public void run() { 
    ... 
    } 
}).start(); 
0

エラーメッセージは、アプリケーションのUIスレッドでGoogleApiClient.blockingConnectにコールすることはできません。 GoogleApiClientに接続する前にコールバックを設定してから、onConnectedコールバックで処理してください。

この例の詳細はhttp://developer.android.com/training/wearables/data-layer/accessing.htmlです。紛失した部分はaddConnectionCallbacksの呼び出しの中にあります。

+0

ありがとうございましたが、私がやっていることです。ウォッチフェイスサービスは、DataApi.DataListener、GoogleApiClient.ConnectionCallbacks、およびGoogleApiClient.OnConnectionFailedListenerの各関数を実装しています。この問題は、onDataChanged関数が呼び出され(モバイルコンパニオンアプリの設定を変更した後)、渡されたアセットからビットマップをロードしようとしたときに発生します。私が使用している関数は、関連するドキュメントの同じ関数(loadBitmapFromAsset)です:http://developer.android.com/intl/ru/training/wearables/data-layer/assets.html – user501223

関連する問題