[解決済み] 字幕コントローラが設定されている必要がある メディアプレイヤーエラー Android
2022-02-26 19:03:28
質問
メディアを再生すると、DDMSで警告が表示されます。
Should have subtitle controller already set
私のコード
private void start() {
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
mp.release();
}
});
}
DDMS LOG
<ブロッククオート字幕コントローラが設定されている必要があります
info/warning (2, 0)
Googleで検索しても、関連するトピックが1つもありません。どうすれば、これを取り除いたり、無効にしたりできるのでしょうか?
解決方法は?
最近、ある開発者が VideoView に字幕のサポートを追加しました。 .
このとき
MediaPlayer
が音楽(または他のソース)の再生を開始すると、SubtitleControllerがあるかどうか確認し、設定されていない場合はこのメッセージを表示します。
再生したいソースが音楽か動画かは気にしていないようです。なぜそんなことをしたのかは不明ですが。
短い回答です。 この"Exception"は気にしないでください。
編集する。
にはまだ存在する。 ロリポップ ,
もし
MediaPlayer
がオーディオファイルの再生にしか使われておらず、ログキャストのエラーを本当に取り除きたい場合は、以下のコードで
empty SubtitleController
を
MediaPlayer
.
本番環境では使用しないでください。また、副作用が発生する可能性があります。
static MediaPlayer getMediaPlayer(Context context){
MediaPlayer mediaplayer = new MediaPlayer();
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) {
return mediaplayer;
}
try {
Class<?> cMediaTimeProvider = Class.forName( "android.media.MediaTimeProvider" );
Class<?> cSubtitleController = Class.forName( "android.media.SubtitleController" );
Class<?> iSubtitleControllerAnchor = Class.forName( "android.media.SubtitleController$Anchor" );
Class<?> iSubtitleControllerListener = Class.forName( "android.media.SubtitleController$Listener" );
Constructor constructor = cSubtitleController.getConstructor(new Class[]{Context.class, cMediaTimeProvider, iSubtitleControllerListener});
Object subtitleInstance = constructor.newInstance(context, null, null);
Field f = cSubtitleController.getDeclaredField("mHandler");
f.setAccessible(true);
try {
f.set(subtitleInstance, new Handler());
}
catch (IllegalAccessException e) {return mediaplayer;}
finally {
f.setAccessible(false);
}
Method setsubtitleanchor = mediaplayer.getClass().getMethod("setSubtitleAnchor", cSubtitleController, iSubtitleControllerAnchor);
setsubtitleanchor.invoke(mediaplayer, subtitleInstance, null);
//Log.e("", "subtitle is setted :p");
} catch (Exception e) {}
return mediaplayer;
}
このコードは、hidden APIから以下のことを行おうとしています。
SubtitleController sc = new SubtitleController(context, null, null);
sc.mHandler = new Handler();
mediaplayer.setSubtitleAnchor(sc, null)
関連
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み] 現在のテーマでスタイル 'coordinatorLayoutStyle' を見つけることができませんでした。
-
[解決済み】Android Studioの初回起動。Android SDKアドオンリストにアクセスできない
-
[解決済み】Android Studioでused import文がunused import文に指定されるのはなぜ?
-
[解決済み] Looper.prepare()を呼び出していないスレッドではハンドラを作成できない
-
[解決済み] Mockito lenient() を使用する場合
-
[解決済み] AndroidのADBデバイスが不正に
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] Rが解決できない - Androidエラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android TextView : "setTextで表示されたテキストを連結しない" について
-
[解決済み】Androidエミュレータのエラーメッセージ。"PANIC: Missing emulator engine program for 'x86' CPUS." (パニック: エミュレータ・エンジン・プログラムがありません)
-
[解決済み】Dalvikとdalvik-cacheとは何ですか?
-
[解決済み] [Solved] Error "File google-services.json is missing from module root folder. これがないとGoogle Services Pluginは機能しません" [重複]。
-
[解決済み】このアクティビティは、すでにウィンドウ装飾によって提供されるアクションバーを持っています。
-
[解決済み】Android Studioでマニフェストのマージに失敗し、複数のエラーが発生した。
-
[解決済み】ビューのルートとしてNULLを渡さないようにする(膨張したレイアウトのルート要素でレイアウトパラメータを解決する必要がある)。
-
[解決済み】googleコンソールエラー`OR-IEH-01`について
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] com.android.supportのライブラリは全て全く同じバージョン表記である必要があります。