2016-12-08 27 views
1

{新手Android開發人員。}JSON與Android通用媒體播放器應用程序(MediaPlayer的錯誤1)

我目前使用谷歌的開源媒體應用上Github發現,試圖創建自己的媒體播放器的一個我自己的項目。但是,我依然會碰到的一個問題是,當我改變RemoteJSON從

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

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

的JSON文件(使用myjson.com來存儲文件)

它填充應用程序內的信息,但是當選擇一個項目時,它會產生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

首先你需要 - 是從你的後端實現新的上傳方法。 您可以在類RemoteJSONSource中使用新的網址和參數執行類似的方法。 之後您需要使用您的MusicProvider並調用上傳方法從您的MusicService類。 如果你的目標是創建你自己的JSON - 你可以上傳和檢索數據MusicService overrided方法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

你好。對,如果你只需要更改網址 - 在項目中更改就足夠了。當然,實現新的Json解析。在我的情況下 - 每次用戶更改UI中的參數時,我都會添加附加參數並撥打電話。 –

+0

你能否解釋我將如何通過音軌號碼解析JSON信息?出於某種原因,我的JSON有軌道信息,但應用程序沒有正確排序?不知道爲什麼 – abbanoob

相關問題