2 csh 34 csh_34 于 2012.09.26 16:56 提问

Android:屏幕方向改变后动作继续执行

我目前在设计一个音频播放文件,问题是如果把屏幕倾斜成水平或横排时候,程序就重启。现在就想倾斜屏幕后如何让程序继续运行,也不想让屏幕固定在横排或水平位置。

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}

请求大家的帮助,谢谢!

5个回答

sasuke38
sasuke38   2012.09.28 11:31
已采纳

通常音乐播放器旋转屏幕之后都要切换布局xml 这个过程让系统自动去选择xml的话就不能进制程序重启了 不过有些人的做法是可以禁止程序重启然后再onconfigchanged方法中手动切换布局xml 我试了一下没有成功 所以我没有禁止程序重启 反正重启对我没影响 播放歌曲还有播放列表都是在service进行的 至于在activity中传过来的参数只要在用掉之后移除就行了

intent.removeExtra("musicFile");
gqs519
gqs519   2012.09.27 09:32
android:configChanges="orientation|keyboardHidden"

在AndroidManifest.xml中为Activity设置configChanges属性

yongyong_21
yongyong_21   2012.09.27 10:05
<activity android:name="YourActivity" android:configChanges="orientation|keyboardHidden"/>
lzyathere
lzyathere   2013.06.03 22:46

解决实现:
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 方法:

sasuke38
sasuke38   2012.11.03 23:14

音乐播放器源码

详情请看这个简易播放器的源码 新手容易看懂

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android 监听屏幕方向改变 onConfigurationChanged
注意:onConfigurationChanged事件并不是只有屏幕方向改变才可以触发,其他的一些系统设置改变也可以触发,比如打开或者隐藏键盘。   当我们的屏幕方向发生改变时,就可以触发onConfigurationChanged事件。我们要想当前的activity捕获这个事件,需要做以下这么几件事情。 第一:权限声明:     API中说该权限允许我们改变配置信息,但是我们再改
Android 屏幕方向监听
正常情况下可以在 Activity 中能够监听到,但是如果是在Window上就不那么好监听了. ok 首先说一下正常情况下 屏幕方向的监听 1. 在mainfest文件中得Activity中加入如下属性 android:configChanges="orientation|screenSize" 如下:  <activity android:name=".MainActiv
Android之屏幕方向|显示方式|Activity重建问题|横竖屏切换不同的布局
两种方式实现锁定Activity运行时屏幕的方向:(1)通过修改AndroidMainfest.xml配置文件修改Android/app/mainfests/AndroidMainfest.xml下的配置文件如下:<activity>节点的android:screenOrientation属性可以完成该任务 //(portrait为保持竖屏,landscape为保持横屏)(2)通过java代码实现:
Android 固定屏幕方向
这周遇到的问题是关于屏幕旋转的。有两种实现方法。 第一种,就是最简单的,在清单文件里面设置固定方向。具体在注册activity的时候加上一句固定屏幕的控制。 android:screenOrientation="portrait" 上面第一种方法很简单。但是一个一个的设置比较麻烦。 第二种就是在java代码中动态设置。 setRequestedOrientation(Activ
[Android]设置屏幕方向
方法一: 查看源码 打印? 1 DisplayMetrics dm = new DisplayMetrics(); 2         getWindowManager().getDefaultDisplay().getMetrics(dm); 3
android改变屏幕显示方向
<br />屏幕的显示方向有横排和竖排两种:<br />下面的代码可以为我们自动的控制长宽。<br />/*** * 根据实际的屏幕长宽,自动的进行竖排或者横排 */ public void autoChange() { DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int hei
Android之屏幕方向改变以及onConfigurationChanged事件
注意:onConfigurationChanged事件并不是只有屏幕方向改变才可以触发,其他的一些系统设置改变也可以触发,比如打开或者隐藏键盘。 当我们的屏幕方向发生改变时,就可以触发onConfigurationChanged事件。我们要想当前的activity捕获这个事件,
Android Activity始终横屏、全屏、屏幕方向改变等屏幕相关
android手机屏幕方向改变的时可以使应用程序随之相应改变,这里就简单介绍屏幕操作中的一点小技巧。包括始终横(竖)屏、全屏、屏幕方向改变时销毁Activity的问题。   1、屏幕始终横屏或竖屏 对于一些游戏,可能我们希望屏幕始终横屏,这时只需要在AndroidManifest.xml中对Activity属性进行设置 android:screenOrientation="
Android 设置Activity屏幕方向
方法一:在AndroidManifest.xml中配置 假设不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性。他有下面几个參数: “unspecified”:默认值 由系统来推断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向. “land...
Android APP 设置屏幕方向
关于Android中Activity的横竖屏切换问题可以通过AndroidManifest.xml文件中的Activity来配置: android:screenOrientation=["unspecified" | "user" | "behind" |           "landscape" | "portrait" |           "sensor" | "nonsen