【发布时间】:2018-11-29 07:18:32
【问题描述】:
在我的应用程序中,我使用媒体播放器播放单个音频文件 (12 mb)。该应用程序包含三个活动 ManiActivity、MWlyrics、About。 音频正在 MainActivity 中播放,问题是当我在这些活动之间切换时..音频停止播放。
public class MainActivity extends AppCompatActivity {
private MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mp = MediaPlayer.create(this, R.raw.abc);
getSupportActionBar().setElevation(0);
ImageView imageView = (ImageView)findViewById(R.id.main_img_lm);
Glide.with(this).load(R.drawable.lm)
.thumbnail(0.5f)
.into(imageView);
}
//play song method
public void playSong (View v){
mp.start();
}
//pause song method
public void pauseSong (View v){
mp.pause();
}
//stop song method
public void stopSong (View v){
mp.stop();
mp = MediaPlayer.create(this, R.raw.abc);
}
// main menu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menur, menu);
menu.add(0, 1, 1, menuIconWithText(getResources().getDrawable(R.drawable.ic_rate), getResources().getString(R.string.rate_us)));
menu.add(0, 2, 2, menuIconWithText(getResources().getDrawable(R.drawable.ic_apps), getResources().getString(R.string.more_apps)));
menu.add(0, 3, 3, menuIconWithText(getResources().getDrawable(R.drawable.ic_share), getResources().getString(R.string.share_app)));
menu.add(0, 4, 4, menuIconWithText(getResources().getDrawable(R.drawable.ic_info), getResources().getString(R.string.about)));
menu.add(0, 5, 5, menuIconWithText(getResources().getDrawable(R.drawable.ic_exit), getResources().getString(R.string.exit)));
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
Toast.makeText(MainActivity.this, "redirecting to rate us and review page page", Toast.LENGTH_SHORT).show();
return true;
case 2:
Toast.makeText(MainActivity.this, "thank you for using", Toast.LENGTH_SHORT).show();
return true;
case 3:
Toast.makeText(MainActivity.this, "sharing app..", Toast.LENGTH_SHORT).show();
return true;
case 4:
Toast.makeText(MainActivity.this, "about this app", Toast.LENGTH_SHORT).show();
Intent j = new Intent(this,About.class);
startActivity(j);
return true;
case 5:
finish();
mp.release();
return true;
case R.id.mdwtid:
Intent i = new Intent(this,MWLyrics.class);
startActivity(i);
return true;
}
return super.onOptionsItemSelected(item);
}
private CharSequence menuIconWithText(Drawable r, String title) {
r.setBounds(0, 0, r.getIntrinsicWidth(), r.getIntrinsicHeight());
SpannableString sb = new SpannableString(" " + title);
ImageSpan imageSpan = new ImageSpan(r, ImageSpan.ALIGN_BOTTOM);
sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb;
}
}
应用详情..
MainActiviy - 显示专辑图像和[播放、暂停和停止]图像。
Mwlyrics - 显示歌词。
关于 - 显示应用信息。
如何解决这个问题..
如何在不中断的情况下在其他活动之间切换时继续播放音频。
如何在应用程序中有效使用此音频文件..考虑内存。
在我的手机(moto one power,android pie)上测试应用程序时,我注意到频率(有时运行 40 %)和最大使用量 170 mb。究竟是什么意思。我是 android 开发新手,我需要一些关于此的建议。
【问题讨论】:
-
使用
Service,如果您想在应用退出时继续播放,请将其设为前台服务。您无法控制框架 api 上的应用程序内存管理 - 运行时 (ART) 会处理此问题。然而,较低的质量(较低的采样率)和较小的文件应该占用较少的内存是有道理的,但实际上这可能并非如此。 developer.android.com/guide/components/services
标签: android audio android-mediaplayer