2016-12-08 8 views
1

{初心者のAndroidのDev。}アンドロイドユニバーサルメディアプレーヤーアプリケーションでJSON(MediaPlayerのエラー1)

私は現在、Googleのオープンソースメディアアプリケーションは、私の1のための私自身のメディアプレーヤーを試してみて、作成するGithubで見つけ使用しています自分のプロジェクト。しかし、私はに実行し続ける1つの問題は、私は(ファイルを保存するためにmyjson.comを使用して)

protected static final String CATALOG_URL = 
    "https://api.myjson.com/bins/2ir4d"; 

protected static final String CATALOG_URL = 
    "http://storage.googleapis.com/automotive-media/music.json"; 

からRemoteJSONでJSONファイルを変更したときということです

それアプリ内の情報を入力しますが、1つの項目を選択すると、MediaPlayerエラー1(-2147483648)が生成されます。 (私がしたのは元のGoogle URLからJSONコードをコピーしてmyjsonにアップロードしたものです)

私の目標は自分のメディアコンテンツで自分のJSONファイルを作成することですが、提供されたURL

アイデア? 多くの義務

答えて

2

あなたがmusic.jsonの内容を見れば、sourceimageパスがhttp://storage.googleapis.com/automotive-mediaディレクトリに格納されている相対パスです。

あなたのケースでは、https://api.myjson.com/bins/Jazz_In_Paris.mp3がありません。そのトラックを再生しようとすると、明らかに失敗します。 the source codeに示すように、値がhttpで始まらない場合にのみ、相対ソースおよびイメージ名ロジックが使用されます。

すべてのソースと画像のプレフィックスをhttp://storage.googleapis.com/automotive-media/に一時的に付けると、自分のコンテンツをホストするまで既存の値を再利用できます。

+0

コンテンツがhttps://www.youtube.com/audiolibrary/musicに保存されていると考えました。さらに詳しく説明できますか?自分のコンテンツを複製する場合は、サーバー上にJSONファイルのmusic.jsonとすべてのメディアが同じフォルダにあるフォルダを作成します。 – abbanoob

+0

ソースを見ると、 'site'属性は決して使用されません。 'source'と' image'に絶対リンクを使うことも、すべてのファイルを同じディレクトリに置くこともできます。 – ianhanniballake

+0

それでサイトの属性は使用されていない場合でも何ですか? – abbanoob

1

まず、バックエンドから新しいアップロード方法を実装する必要があります。 新しいURLとパラメータを使用して、RemoteJSONSourceの同様のメソッドを実行できます。 MusicProviderを使用して、MusicServiceクラスからアップロードメソッドを呼び出す必要がある場合。 あなたの目標は、あなた自身のJSONを作成する場合 - あなたはMusicServiceオーバーライドメソッドOnLoadChildrenにこの方法をアップロードし、データを取得することがあります。

@Override 
    public void onLoadChildren(@NonNull final String parentMediaId, 
          @NonNull final Result<List<MediaItem>> result) { 
     LogHelper.d(TAG, "OnLoadChildren: parentMediaId=", parentMediaId); 

     // VTM 
     getStoredUserData(); 
     mMusicProvider.setSource(new RemoteJSONSource(param1, param2, param3, param4)); 

result.detach(); 
     mMusicProvider.retrieveMediaAsync(new MusicProvider.Callback() { 
      @Override 
      public void onMusicCatalogReady(boolean success) { 
       result.sendResult(mMusicProvider.getChildren(parentMediaId, getResources())); 
      } 
     }, param1, param2, param3, param4); 

    } 

私はこの方法をした、と私の解決策が動作します。このプレーヤーをよりメンテナンス可能にする方法を以前に尋ねてきましたが、これは新しい実装であり、より少ない情報です。

+0

私はただ既存のパラメータを変更できませんでしたか?自分のサーバーにJSONファイルとメディアコンテンツをホストして、そのようにするだけなら、なぜすべての面倒を見るのでしょうか。たとえば、私はwww.mydomain.org/services/music.jsonにファイルとJSONをホストします。正しい?次に、そのURLをRemoteJSONSourceに入れます。パラメータが一致する限り、正常に機能しますか? – abbanoob

+0

こんにちは。そうです、変更URLだけが必要な場合は、プロジェクトで変更するだけで十分です。もちろん、新しいJson解析を実装します。私の場合、私は追加のパラメータを持っていて、ユーザーがuiでparamsを変更するたびに呼び出しを行いました。 –

+0

JSON情報をトラック番号で解析する方法を説明できますか?何らかの理由で私のJSONがトラック情報を持っていますが、アプリはそれらを正しく注文していません。わからない理由 – abbanoob

関連する問題