2017-03-07 79 views
-1

我是Android Studio的noob,我創建了超過300種聲音的Soundboard。 有沒有辦法上傳Firebase中的聲音,然後將其播放出Firebase?我的應用程序是150MB大,我該如何減少?

這裏是只有2個聲音的代碼。只是爲了展示我的音板如何工作。

public class MainActivity extends AppCompatActivity{ 



    public MediaPlayer mp; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
} 


    //plays sound 
    public void sound1(View view){ 
     cleanUpMediaPlayer(); 
     mp = MediaPlayer.create(this, R.raw.sound1); 
     mp.start(); 
    } 


    public void sound2(View view){ 
     cleanUpMediaPlayer(); 
     mp = MediaPlayer.create(this, R.raw.sound2); 
     mp.start(); 
    } 



    public void cleanUpMediaPlayer(){ 
     if(mp != null) { 
      if(mp.isPlaying()) { 
       try{ 
        mp.reset(); 
        mp.prepare(); 
        mp.stop(); 
        mp.release(); 
        mp = null; 
       }catch (Exception e){ 
        e.printStackTrace(); 
       } 
     } 
    } 
}} 

而這與300聲音。

您能否向我解釋如何將聲音放入Firebase(如果可以的話)以及如何將它們播放出Firebase?

對不起,我不愉快的經歷,我的英文:)

+0

你的目標是像音頻流(看看這[後](http://stackoverflow.com/q/41315373/4625829))?或者你只是想上傳音頻文件?您可以使用[Firebase存儲](https://firebase.google.com/docs/storage/) –

+0

Apk大小或應用數據大小? – sasikumar

+0

你應該把你的大文件(聲音)放到某個Web服務器上,然後從該服務器上播放它們。 –

回答

1

正如評論所說的@AL,那麼你可能會當你的應用程序需要播放聲音每次在火力地堡存儲的聲音和,你可能會觸發請求下載或流式播放聲音。

但是,如果這些聲音是應用程序中一個或多個功能的必需資源,並且您希望在應用程序首次啓動後讓您的應用程序可以脫機使用,那麼我建議您將這些聲音上傳爲APK expansion file

Google Play通常會在下載APK的同時下載擴展文件,但您仍然需要自行設置邏輯以檢查文件是否已下載,如果不是,請從URL下載當您的應用啓動時,Google Play的應用授權服​​務會提供給您。

的原因,我們需要檢查每一個時代這個應用程序啓動是因爲:

  1. 的APK下載時,擴展文件無法下載。
  2. 下載的擴展文件保存在共享外部存儲(這意味着,例如,用戶可以訪問並刪除文件等)

下面的尖端從APK Expansion Files document要特別適合你的情況,如果你是上傳聲音到APK擴展文件:

如果你正在打包的媒體文件成ZIP,你可以用與偏移和長度控制文件的媒體播放調用(如MediaPlayer.setDataSource()和的Soundpool .load()),而無需解壓ZIP。爲了達到此目的,在創建ZIP包時,您不得對媒體文件執行額外的壓縮。例如,使用zip工具時,你應該使用-n選項指定不應被壓縮的文件後綴: 拉鍊-n .MP4; .OGG main_expansion media_files

0

您可以上傳的所有文件在Firebase存儲使用Streaming API或任何託管服務器

然後之後你可以使用MediaPlayer的

mediaPlayer = MediaPlayer.create(this, Uri.parse("http://vprbbc.streamguys.net:80/vprbbc24.mp3")); 
mediaPlayer.start(); 

你可以看到關於它的更多的發揮它:https://stackoverflow.com/a/13740850/1318946

希望它會幫助你在網上玩,你的應用規模將降低。 :)