最近com.google.Android.gms:play-services 9.2.0に更新し、新しいChromecastライブラリとFirebase Analyticsを使用しようとしていますが、「com.google.Android.gms.internal.zzsj $ zza :受け入れ可能なモジュールが見つかりません。ローカルバージョンは0で、リモートバージョンは0です。」 com.google.Android.gms.cast.framework.CastContext。(Unknown Source)のActivity onCreateメソッド内。 Cast機能がエミュレーターと連携していないことが原因であるか、バージョンの問題である場合、何かアイデアはありますか?私がテストしているエミュレータは5.0と5.1を実行しています。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FirebaseAnalytics mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
setupCastListener();
mCastContext = CastContext.getSharedInstance(this);
mCastSession = mCastContext.getSessionManager().getCurrentCastSession();
mCastContext.getSessionManager().addSessionManagerListener(mSessionManagerListener, CastSession.class);
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
}
ありがとう
エミュレーターのPlay Servicesのバージョンは9.2.0をサポートしていません。現時点では、どのエミュレーターイメージも9.2.0をサポートしているとは思いません。オプションは、9.0.2にダウングレードするか、更新されたエミュレーターイメージがリリースされるまで実際のデバイスで実行することです。
Logcatの出力を注意深く見ると、次のようなメッセージが表示されます。
W/GooglePlayServicesUtil: Google Play services out of date. Requires 9256000 but found 9080030
エミュレータが使用しているGPSのバージョン番号を確認するには、[設定/アプリ]に移動し、Google Play開発者サービスを見つけて、タップしてアプリ情報を取得します。
GoogleApiAvalability.GOOGLE_PLAY_SERVICES_VERSION_CODE を呼び出すと、コードからGPSバージョン番号を取得できます。
この回答 には、エミュレータのバージョンに関するいくつかの関連情報が含まれています。
実際のデバイスに関するAdrian Cretuの質問の更新
私の実験では、実際のデバイスで実行されているCastアプリが古いバージョンのPlay Servicesを検出し、解決処理を開始できる可能性があることを示しています。 CastVideos サンプルアプリを試してみました。私のソリューションは最適ではないかもしれませんが、コンセプトを示しています。起動時に実行され、Playサービスの可用性を確認する新しいアクティビティを作成しました。マニフェストを変更して、このアクティビティをVideoBrowserActivity
ではなくランチャーアクティビティにしました。
public class InitActivity extends AppCompatActivity {
private static final String TAG = "InitActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GoogleApiAvailability googAvail = GoogleApiAvailability.getInstance();
int status = googAvail.isGooglePlayServicesAvailable(this);
Log.i(TAG, "onCreate: Status= " + googAvail.getErrorString(status));
googAvail.makeGooglePlayServicesAvailable(this)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.i(TAG, "onComplete: Done");
if (task.isSuccessful()) {
Log.i(TAG, "onComplete: Starting VideoBrowser");
startActivity(new Intent(InitActivity.this, VideoBrowserActivity.class));
finish();
} else {
Log.e(TAG, "onComplete: RESOLUTION FAILED");
}
}
});
}
}
Play Servicesが存在し、最新で有効になっている場合、可用性を確認するタスクはすぐに完了し、元の起動アクティビティVideoBrowserActivity
を開始します。それ以外の場合は、Playサービスをアップグレードする必要があることをユーザーに通知するダイアログが表示され、ユーザーが同意すると、Playストアが開き、ユーザーは最新バージョンのダウンロードを開始できます。
VideoBrowserActivity
にクリーンに移行する方法を見つけることができませんでした。アプリを再起動する必要がありました。作業が増えると、古いPlayサービスからの完全な回復が可能になると思います。少なくともアプリのクラッシュよりも良いもの。
このクラッシュは、GPSがアップデートされていない実際のデバイスでも発生します。 Google Cast SDK v3とGPS 9.2.0を使用しています
Cast v3が機能するためには、デバイスが実際にGPS 9.2.0を必要とするという言及はどこにもありませんでした。起動時にクラッシュしないようにするための回避策または少なくともソリューションは何ですか?
エミュレータを削除し、SDKマネージャで、そのエミュレータが構築されたSDKプラットフォームを削除します。
次に、そのSDKプラットフォームを再ダウンロードし、エミュレータを再構築します。
どうして?
上記のSDKプラットフォームをダウンロードしてそのエミュレーターをビルドした後でGoogle Play開発者サービスに更新があった場合、レガシーバージョンのGoogle PlayサービスはまだそのSDKプラットフォームのビルドに含まれています。
これは私の人生の2時間を燃やしました。
google play developer services app を更新したところ、解決できました。