我的应用程序是150MB大,我怎么能减少它?

时间:2017-03-07 05:32:58

标签: android database firebase android-mediaplayer

我是Android Studio中的一个菜鸟,我创建了一个超过300个声音的Soundboard。 有没有办法在Firebase中上传声音,然后将它们从Firebase中播出?

这是只有2个声音的代码。只是为了展示我的Soundboard如何运作。

with open("some_file","wb") as f: 
    f.write(u'0.021*"\u0d2a\u0d3f" + 0.021*"\u0d35\u0d3f\u0d36\u0d4d\u0d35\u0d02\u0d2d\u0d30\u0d28\u0d4d\u0d31\u0d46" + 0.021*"\u0d05\u0d26\u0d4d\u0d26\u0d47\u0d39\u0d02"'.encode("utf-8"))

这有300个声音。

您能解释一下如何将声音放入Firebase(如果可以的话)以及如何将它们从Firebase中播放出来吗?

对不起我的糟糕经历和我的英语:)

2 个答案:

答案 0 :(得分:1)

正如@AL在评论中所建议的那样,您可以在Firebase存储中托管声音,每当您的应用需要播放声音时,您都可以触发下载或流式播放声音的请求。

但是,如果这些声音是应用中一个或多个功能的必备资源,并且您希望在第一次启动应用后让您的应用离线使用,我建议您将这些声音上传为{{ 3}}

Google Play通常会在下载APK的同时下载扩展文件,但是您仍然需要使用自己的逻辑来检查文件是否已下载,如果不是,请从提供的URL下载应用程序启动时,Google Play的应用程序许可服务会给您回复。

每次应用启动时我们需要检查这个的原因是:

  1. 下载APK时无法下载扩展文件。
  2. 下载的扩展文件保存在共享外部存储上(意味着用户可以访问和删除此文件等)。
  3. 如果您将声音上传到APK扩展文件中,APK expansion file下面的提示特别适合您的情况:

      

    如果要将媒体文件打包成ZIP,则可以对具有偏移和长度控件的文件(例如MediaPlayer.setDataSource()和SoundPool.load())使用媒体播放调用,而无需解压缩ZIP 。为了使其正常工作,在创建ZIP包时,不得对媒体文件执行额外压缩。例如,使用zip工具时,应使用-n选项指定不应压缩的文件后缀:   zip -n .mp4; .ogg main_expansion media_files

答案 1 :(得分:0)

您可以使用Streaming API或任何托管服务器上传 Firebase存储空间上的所有文件。

然后,您可以使用 MediaPlayer

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

您可以看到更多相关信息:https://stackoverflow.com/a/13740850/1318946

希望它可以帮助您在线玩,您的应用程序大小将会减少。 :)