画面をオンにしてロック画面を解除するブロードキャストレシーバーからアクティビティを開始しています (windowmanager フラグを使用)。この部分は計画通りに機能しており、活動が開始されます。onCreate で YouTubePlayerView を初期化し、特定の YouTube 動画の再生を開始します。これは Galaxy S2 では計画どおりに機能しますが、Nexus 7 と Galaxy Note 2 では YouTube ビデオが開始されず、YouTubePlayerView に「無効なリクエスト」を示すメッセージが表示されます。
今、私はこれについて考え、この API が奇妙な動作を引き起こす可能性があることを知りました。画面が完全にオンになっておらず、これが原因でビデオが読み込まれないというオプションを思いつきました。YouTubePlayerView で初期化を呼び出す前に、これを使用して画面がオンになっているかどうかを確認しました。
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
ScreenOn = pm.isScreenOn();
if(ScreenOn){
playerView.initialize(DEVELOPER_KEY, this);
}else{
Toast.makeText(this, "SCREEN ON LATE", Toast.LENGTH_LONG).show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
myHandler.post(updateRunnable);
}
}, 2000);
}
画面がオンになっていない場合は、2 秒待ってから YouTubePlayerView の初期化を再試行します。myHandler のコードは割愛します。これは、後で initialize を呼び出すだけで機能するためです。
何らかの理由で、「無効なリクエスト」メッセージがまだ表示されます。初期化が行われていることがわかりますが、その後すべてが停止し、同じメッセージがポップアップ表示されます。LogCat には何も表示されず、エラーや奇妙な動作も表示されません。S2 でこれを試してみましたが、問題なくビデオが開始されます。しかし、Note 7 と Note 2 では問題が解決しません。
以前は YouTube API を使用していましたが、この種の問題は一度もありませんでした。
編集: onError は INTERNAL_ERROR しか返さないので、何の助けにもなりません。