我目前在设计一个音频播放文件,问题是如果把屏幕倾斜成水平或横排时候,程序就重启。现在就想倾斜屏幕后如何让程序继续运行,也不想让屏幕固定在横排或水平位置。
Public void Play(){
AudioRenderer mr = new AudioRenderer();
mp = mr.AudioRenderer(filePath);
}
private class AudioRenderer extends Activity {
private MediaPlayer AudioRenderer(String filePath) {
File location = new File(filePath);
Uri path = Uri.fromFile(location);
mp= MediaPlayer.create(this, path);
}
return mp}
请求大家的帮助,谢谢!
详情请看这个简易播放器的源码 新手容易看懂
通常音乐播放器旋转屏幕之后都要切换布局xml 这个过程让系统自动去选择xml的话就不能进制程序重启了 不过有些人的做法是可以禁止程序重启然后再onconfigchanged方法中手动切换布局xml 我试了一下没有成功 所以我没有禁止程序重启 反正重启对我没影响 播放歌曲还有播放列表都是在service进行的 至于在activity中传过来的参数只要在用掉之后移除就行了
intent.removeExtra("musicFile");
android:configChanges="orientation|keyboardHidden"
在AndroidManifest.xml中为Activity设置configChanges属性
<activity android:name="YourActivity" android:configChanges="orientation|keyboardHidden"/>
解决实现:
1.在 AnroidMainifest.xml 的 activity 元素中加入:
android:configChanges="orientation|keyboardHidden"
或
android:configChanges="orientation|keyboard|keyboardHidden"
表示在改变屏幕方向、弹出软件盘和隐藏软键盘时,不再去执行 onCreate() 方法,
而是直接执行 onConfigurationChanged() 。
如果不申明此段代码,按照Activity的生命周期,都会去执行一次 onCreate() 方法,
而 onCreate() 方法通常会在显示之前做一些初始化工作。
所以如果改变屏幕方向这样的操作都去执行 onCreate() 方法,就有可能造成重复的初始化,
降低程序效率是必然的了,而且更有可能因为重复的初始化而导致数据的丢失。
这是需要避免的!
2.权限声明:
API 中说该权限允许我们改变配置信息,但是我们在改变屏幕方向的程序中却并没有用到该权限,是不是相互冲突了呢?
这里我们可以这样认为,当我们声明该权限的的时候,
系统允许我们通过重写 activity 中的 onConfigurationChanged 方法来捕获和修改某些配置信息。
3.在 Java 源代码文件中重写 Activity 中的 onConfigurationChanged 方法: