2

Eclipse を使用して Android 用のラジオ ストリーム アプリケーションを開発しています。アプリのユーザー エージェントを変更して、誰かが shoutcast ストリームを再生しているときに、icecast/shoutcast 管理者でユーザー エージェントを xxxx としてリモートで表示できるようにしたいと考えています。舞台恐怖症の 1.2

MediaPlayer を使用してストリームを再生しています

私は次のことを見つけました

「HTTPDataSource.cpp を上書きする必要があります (HTTPDataSource::read_at を参照してください)。そして、それをメディア プレーヤーのコアに挿入します。:) まず、この調査を見てください - Android フレームワークでのメディア プレーヤーの作成中のイベントの流れ」

しかし、HTTPDataSource.cpp はどこにありますか?

4

2 に答える 2

0

MediaPlayer を使用してメディア コンテンツを直接ストリーミングする場合、ユーザー エージェントを直接設定する方法はありません。内部的に、MediaPlayer は HTTPDataSource.cpp を使用してストリーミング用のコンテンツを取得している可能性があります。その場合は、それを変更し、フレームワーク フラッシュをデバイスに再コンパイルしてから実行する必要があります (サービスを提供するだけの場合、これは役に立ちません。多くのユーザーは、アプリケーションを実行するためだけにデバイスをフラッシュしません)。

もっと面倒な方法を試すこともできますが、成功する場合と失敗する場合があります。http-stream を使用しているため、http コンテンツを取得してペイロード データをデバイスに書き込み (mp3 ファイルなどを作成)、その mp3 を使用してストリームを偽造することができます。メディアプレーヤー。http コンテンツを受信しながら、ヘッダー文字列を HttpHost (User-Agent 文字列?) に追加できます。

お役に立てれば。

于 2013-04-21T10:04:27.420 に答える
0

MediaPlayer クラスは以下を提供しますsetDataSource()

public void setDataSource (Context context, Uri uri, Map<String, String> headers);

MediaPlayer インスタンスを制御するアプリでは、次のようにヘッダー マップでユーザー エージェントを渡します。

Map<String, String> headerMap = new HashMap<String, String>();;
headerMap.put("User-Agent", "my user agent value");
mediaPlayer.setDataSource(context, uri, headerMap);

デフォルトのユーザー エージェント文字列 (stagefright/1.x (Linux; Android xx)) をオーバーライドします。

于 2014-01-07T10:52:23.880 に答える