方向改变声音

时间:2012-05-30 15:36:21

标签: java android

早上好,

我们已经开发了一个Android应用程序,并且每次屏幕方向发生变化时,我都会了解如何消除通知声音的不良行为。显然,此行为仅存在于运行OS 3.2.3或更高版本的设备上。

我已阅读了几条帖子,表明可以通过在设置中取消选中USB调试来关闭此功能 - >开发人员选项,但未选中此选项,并且我们的任何Android设备上的其他任何应用都不会在更改方向时发出此通知。

应用程序确实需要在收到“消息”时发出通知(应用程序连接到Web服务并且经常从服务获取新消息)。因此,这将排除任何禁用通知的解决方案。

到目前为止,我已经尝试了几种可能的解决方案: 1)收到消息后,实例化新的NotificationManager,并在通知发出后,销毁NotificationManager。

if(MessageReceived == true) {
    String ns = Context.NOTIFICATION_SERVICE;
    messageNotifyManager = (NotificationManager) getSystemService(ns);
}
showNotification();
messageNotifyManager = null;

2)我意识到方向改变本质上是被破坏和重新创建的视图。我在初始onCreate方法中设置了一个标志,并在重新创建Notification Manager之前检查该标志是否有值。

public static int Flag = 0; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if(Flag == 0) {
        String ns = Context.NOTIFICATION_SERVICE;
  messageNotifyManager = (NotificationManager) getSystemService(ns);
        Flag = 1;
    } 
} 

3)在应用程序的主类中,我创建了一个公共OrientationEventListener属性,然后在onCreate方法中设置其值,立即禁用它。当没有禁用声音时,我尝试在引用应用程序主类的每个类中禁用该属性。

public OrientationEventListender listener;
@Override
public void onCreate() {
    super.onCreate();
    appContext = getApplicationContext();
    GetPreferences();
    //...
    listener = new OrientationEventListener(appContext){
        public void onOrientationChanged(int Orientation){
        }
    };
    listener.disable();
}

现在,正如您可能已经知道的那样,我对Android开发非常陌生。我认为这个解决方案非常简单,每个人都知道,这就是为什么网上任何地方都没有答案的原因。但是,对这个简单问题的任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

通过修改AndroidManifest,为每个活动添加以下标记来解决此问题:android:configChanges =“orientation”