我的应用程序有 150MB,我该如何减少它?
My application is 150MB big, how can I reduce that?
我是 Android Studio 的菜鸟,我创建了一个包含 300 多种声音的 Soundboard。
有没有办法在 Firebase 中上传声音,然后从 Firebase 中播放它们?
这是只有 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 中播放它们吗?
对不起我糟糕的经历和我的英语:)
正如@AL 在评论中所建议的那样,您可以将声音托管在 Firebase 存储中,并且每次当您的应用需要播放声音时,您可以触发下载或流式传输和播放声音的请求。
但是如果这些声音是您应用中一个或多个功能的强制性资源,并且您希望您的应用在第一次启动后可以离线使用,我建议您将这些声音作为APK expansion file.
Google Play 通常会在下载 APK 的同时下载扩展文件,但是您仍然需要使用自己的逻辑来检查文件是否已下载,如果没有,当您的应用程序启动时,从 Google Play 的应用程序许可服务的响应中提供给您的 URL 下载它。
我们每次启动应用程序时都需要检查的原因是:
- 下载APK时无法下载扩展文件
- 下载的扩展文件保存在共享的外部存储上(意味着例如用户可以访问和删除该文件等)
如果您将声音上传到 APK 扩展文件中,APK Expansion Files document 中的以下提示将特别适合您的情况:
If you're packaging media files into a ZIP, you can use media playback calls on the files with offset and length controls (such as MediaPlayer.setDataSource() and SoundPool.load()) without the need to unpack your ZIP. In order for this to work, you must not perform additional compression on the media files when creating the ZIP packages. For example, when using the zip tool, you should use the -n option to specify the file suffixes that should not be compressed:
zip -n .mp4;.ogg main_expansion media_files
您可以使用 Streaming API 或任何 托管服务器 将所有文件上传到 Firebase 存储。
然后就可以使用MediaPlayer
播放了
mediaPlayer = MediaPlayer.create(this, Uri.parse("http://vprbbc.streamguys.net:80/vprbbc24.mp3"));
mediaPlayer.start();
您可以查看更多相关信息:
希望它能帮助您在线玩游戏,并减少您的应用程序大小。 :)
我是 Android Studio 的菜鸟,我创建了一个包含 300 多种声音的 Soundboard。 有没有办法在 Firebase 中上传声音,然后从 Firebase 中播放它们?
这是只有 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 中播放它们吗?
对不起我糟糕的经历和我的英语:)
正如@AL 在评论中所建议的那样,您可以将声音托管在 Firebase 存储中,并且每次当您的应用需要播放声音时,您可以触发下载或流式传输和播放声音的请求。
但是如果这些声音是您应用中一个或多个功能的强制性资源,并且您希望您的应用在第一次启动后可以离线使用,我建议您将这些声音作为APK expansion file.
Google Play 通常会在下载 APK 的同时下载扩展文件,但是您仍然需要使用自己的逻辑来检查文件是否已下载,如果没有,当您的应用程序启动时,从 Google Play 的应用程序许可服务的响应中提供给您的 URL 下载它。
我们每次启动应用程序时都需要检查的原因是:
- 下载APK时无法下载扩展文件
- 下载的扩展文件保存在共享的外部存储上(意味着例如用户可以访问和删除该文件等)
如果您将声音上传到 APK 扩展文件中,APK Expansion Files document 中的以下提示将特别适合您的情况:
If you're packaging media files into a ZIP, you can use media playback calls on the files with offset and length controls (such as MediaPlayer.setDataSource() and SoundPool.load()) without the need to unpack your ZIP. In order for this to work, you must not perform additional compression on the media files when creating the ZIP packages. For example, when using the zip tool, you should use the -n option to specify the file suffixes that should not be compressed: zip -n .mp4;.ogg main_expansion media_files
您可以使用 Streaming API 或任何 托管服务器 将所有文件上传到 Firebase 存储。
然后就可以使用MediaPlayer
播放了mediaPlayer = MediaPlayer.create(this, Uri.parse("http://vprbbc.streamguys.net:80/vprbbc24.mp3"));
mediaPlayer.start();
您可以查看更多相关信息:
希望它能帮助您在线玩游戏,并减少您的应用程序大小。 :)