4

私は数週間前から Android 開発を始めたばかりで、UDP または RDP でマルチキャストされたライブ ストリームをユーザーに表示できるアプリを作成する必要があります。ストリームは「rtp://230.0.0.11:1234」などのアドレスにあり、次のモジュールのおかげで WIFI によって放出されます: http://www.ikusi.es/public/ctrl_public_prod.php?accion=verProducto&id_familia =34&id_gama=186&id_producto=351

私はすでにプレーヤー (PlayStore の Daroon プレーヤー) から読み取ろうとしましたが、うまく機能したので、私の愚かな問題はブロードキャストによるものではないと思います。

さまざまな方法でビデオ コンテンツをユーザーに表示できることがわかりました。

  • ACTION_VIEW で新しいインテントを使用すると、Android はコンテンツを表示できるアプリを選択します。

  • MediaPlayer クラスと VideoView を使用します。

私には 2 つの問題があります。最も重要なことから始めましょう。そして、アクションビューについては、私が以前に試したものです:

    Uri streamURL = Uri.parse("rtp://230.0.0.11:1234");
    Intent streamIntent = new Intent(Intent.ACTION_VIEW);
    streamIntent.setData(streamURL);
//  streamIntent.setDataAndType(streamURL,"video/*");   
    startActivity(streamIntent);

LogCat は次のとおりです。

07-11 00:25:58.119: D/AndroidRuntime(2659): Shutting down VM
07-11 00:25:58.119: W/dalvikvm(2659): threadid=1: thread exiting with uncaught exception (group=0x40015560)
07-11 00:25:58.129: E/AndroidRuntime(2659): FATAL EXCEPTION: main
07-11 00:25:58.129: E/AndroidRuntime(2659): java.lang.IllegalStateException: Could not execute method of the activity
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.view.View$1.onClick(View.java:2144)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.view.View.performClick(View.java:2485)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.view.View$PerformClick.run(View.java:9080)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.os.Handler.handleCallback(Handler.java:587)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.os.Looper.loop(Looper.java:123)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.app.ActivityThread.main(ActivityThread.java:3683)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at java.lang.reflect.Method.invokeNative(Native Method)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at java.lang.reflect.Method.invoke(Method.java:507)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at dalvik.system.NativeStart.main(Native Method)
07-11 00:25:58.129: E/AndroidRuntime(2659): Caused by: java.lang.reflect.InvocationTargetException
07-11 00:25:58.129: E/AndroidRuntime(2659):     at java.lang.reflect.Method.invokeNative(Native Method)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at java.lang.reflect.Method.invoke(Method.java:507)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.view.View$1.onClick(View.java:2139)
07-11 00:25:58.129: E/AndroidRuntime(2659):     ... 11 more
07-11 00:25:58.129: E/AndroidRuntime(2659): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=rtp://230.0.0.11:1234 }
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1409)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.app.Activity.startActivityForResult(Activity.java:2827)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.app.Activity.startActivity(Activity.java:2933)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at fr.infosat.tvreplay.MainActivity.listStream(MainActivity.java:35)
07-11 00:25:58.129: E/AndroidRuntime(2659):     ... 14 more
07-11 00:26:00.079: I/Process(2659): Sending signal. PID: 2659 SIG: 9

私の理解では、エラー InvocationTargetException (通常はクラス名のエラーが原因) は、startActivity でクラスを呼び出さないため、ここで直接解決することはできません。ただし、構文が正しくないと思います。使用するメソッドが適切ではない可能性があります。もちろん、setDataAndType 行のコメントを外すと、同じエラーが表示されます。

暗黙のインテントを起動すると、エラーが発生することに気付きました。

  • 私の 2 番目の問題は、Daroon Player が私のセット トップ ボックスでうまく動作することです。私のストリームはテレビで見ることができます。しかし、Eclipseエミュレーターから起動しようとすると、VLCから再生できても再生されません...エミュレーターはそのようなストリームを読み取るのに十分強力ですか?

それを解決する方法についての手がかりがあることを願っています!:)

4

2 に答える 2

2

rtp://まず、そのようなURLを処理できるアプリがデバイスにインストールされていないため、例外が発生します。

開始する前にインテントを確認することをお勧めします:queryIntentActivities(..)

次に、エミュレータは利用可能な実際のデバイスに比べてかなり遅いと思います。エミュレータを使用してA/Vストリーミングをテストしたくない場合があります。

于 2012-07-12T13:49:06.920 に答える