2013-06-27 6 views
0

Я начинаю с android приложение. Я создал свое первое приложение для воспроизведения звука от Raw папка на res директория я сделал свой код хорошо, и он работает хорошо, тогда я продолжаю останавливать звук, который я сделал, но когда я поворачиваю мобильную или мобильную кнопку назад ошибка приложение остановлено .... произошло. как я могу решить эту проблему.ошибка при остановке при потере мобильного

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) 
{ 
    mp= MediaPlayer.create(Ramadan.this,R.raw.sound); 

if(mp.isPlaying()) 
{ 
    mp.stop(); 
    return true; 
} 

} 
else return false; 
    return false; 

} 

@Override 
protected void onStart() { 
    super.onStart(); 
} 

@Override 
protected void onResume() { 

    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 

    registerReceiver(listener, intentFilter); 

    super.onResume(); 
} 
@Override 
protected void onStop() { 
    super.onStop(); 

    if(mp.isPlaying()) 
    { 
     mp.stop(); 
     mp.release(); 
    } 
} 


@Override 
protected void onPause() { 

    super.onPause(); 

    if(mp.isPlaying()) 
    { 
     mp.stop(); 
     mp.release(); 
    } 
} 

<activity 
     android:name="com.x.x" 
     android:label="@string/app_name" 
     android:launchMode="singleTask" android:configChanges="orientation|keyboardHidden" > 


     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <action android:name="android.intent.action.ACTION_SCREEN_OFF"/> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

06-27 17:57:59.422: E/Trace(636): error opening trace file: No such file or directory (2) 
06-27 17:58:00.452: I/Choreographer(636): Skipped 31 frames! The application may be doing too much work on its main thread. 
06-27 17:58:00.492: D/gralloc_goldfish(636): Emulator without GPU emulation detected. 
06-27 17:58:00.992: I/Choreographer(636): Skipped 74 frames! The application may be doing too much work on its main thread. 
06-27 17:58:02.432: D/dalvikvm(636): GC_CONCURRENT freed 115K, 3% free 8346K/8519K, paused 6ms+27ms, total 112ms 
06-27 17:58:02.432: D/dalvikvm(636): WAIT_FOR_CONCURRENT_GC blocked 67ms 
06-27 17:58:08.902: D/AndroidRuntime(636): Shutting down VM 
06-27 17:58:08.902: W/dalvikvm(636): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
06-27 17:58:08.982: E/AndroidRuntime(636): FATAL EXCEPTION: main 
06-27 17:58:08.982: E/AndroidRuntime(636): java.lang.RuntimeException: Unable to pause activity {com.ramadan/com.ramadan.Ramadan}: java.lang.NullPointerException 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2838) 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2794) 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2772) 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.app.ActivityThread.access$800(ActivityThread.java:130) 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212) 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.os.Looper.loop(Looper.java:137) 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.app.ActivityThread.main(ActivityThread.java:4745) 
06-27 17:58:08.982: E/AndroidRuntime(636): at java.lang.reflect.Method.invokeNative(Native Method) 
06-27 17:58:08.982: E/AndroidRuntime(636): at java.lang.reflect.Method.invoke(Method.java:511) 
06-27 17:58:08.982: E/AndroidRuntime(636): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
06-27 17:58:08.982: E/AndroidRuntime(636): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
06-27 17:58:08.982: E/AndroidRuntime(636): at dalvik.system.NativeStart.main(Native Method) 
06-27 17:58:08.982: E/AndroidRuntime(636): Caused by: java.lang.NullPointerException 
06-27 17:58:08.982: E/AndroidRuntime(636): at com.ramadan.Ramadan.onPause(Ramadan.java:152) 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.app.Activity.performPause(Activity.java:5106) 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1225) 
06-27 17:58:08.982: E/AndroidRuntime(636): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2825) 
06-27 17:58:08.982: E/AndroidRuntime(636): ... 12 more 
06-27 17:58:11.552: I/Process(636): Sending signal. PID: 636 SIG: 9 
+0

Имеются сообщения об ошибках в LogCat (возможно)? –

+0

опубликуйте свой журнал ошибок, пожалуйста :) – juned

+0

Я добавил log cat – Egydeveloper

ответ

2

В манифесте, сделайте следующие изменения.

<activity android:name=".EULAActivity" 
android:theme="@android:style/Theme.Translucent" 
android:configChanges="keyboard|keyboardHidden|orientation" /> 

android:configChanges is the attribute, you need to use in your application. 
+0

Он уже использовал его 'android: configChanges =" orientation | keyboardHidden "' – juned

+0

okay ... я не заметил, что в этом случае должно быть какое-либо упражнение когда ур меняет ориентацию .. –

+0

Да, правильно, должно быть какое-то исключение :) – juned

0

Попробуйте этот код ...

Положите его в файл класса после того, как над OnCreate() замещают onBackPressed().

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 
    finish(); 
} 

и поставить следующее свойство с регистром активности в AndroidManifest.xml файла.

android:screenOrientation="portrait" 

в соответствии с вашими требованиями, если вам нужен экран Портретных/Пейзаж.

+0

ошибка «приложение остановилось ....» произошло при нажатии кнопки «Назад назад». Мне нужно, чтобы приложение работало с обоими направлениями не только с портретом – Egydeveloper

+0

, чем вам нужно android: configChanges = "ориентация" в файле menifest.xml –

+0

это приведет к той же ошибке, которую я задал по моему вопросу – Egydeveloper

0

Переменная mp должен быть установлен в соответствующее значение (хорошие места onCreate() или onResume()) до его использования (как это происходит в onPause())