2012-11-10 3 views
1

첫째, 영어로 내 레벨을 유감스럽게 생각합니다.Android GC_CONCURRENT 및 사운드 박스 앱 개발

도움이 필요합니다. 나는 앱 (버튼을 클릭하고 사운드를들을 수있는 사운드 박스)을 개발하려고합니다. 나는 아무런 문제가 없었지만 노래를 한 후에 나는 기억 상 문제가있다. 내 기록은 다음과 같습니다.

enter code here11-10 15:21:02.446: E/Trace(942): error opening trace file: No such file   or directory (2) 
11-10 15:21:03.535: D/dalvikvm(942): GC_CONCURRENT freed 83K, 2% free 8369K/8519K,   paused 83ms+4ms, total 149ms 
11-10 15:21:03.535: D/dalvikvm(942): WAIT_FOR_CONCURRENT_GC blocked 24ms 
11-10 15:21:03.795: D/dalvikvm(942): GC_CONCURRENT freed 10K, 2% free 8813K/8903K, paused 74ms+17ms, total 134ms 
11-10 15:21:04.026: I/Choreographer(942): Skipped 46 frames! The application may be doing too much work on its main thread. 
11-10 15:21:04.035: D/gralloc_goldfish(942): Emulator without GPU emulation detected. 
11-10 15:21:04.276: D/AndroidRuntime(942): Shutting down VM 
11-10 15:21:04.276: W/dalvikvm(942): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
11-10 15:21:04.315: E/AndroidRuntime(942): FATAL EXCEPTION: main 
11-10 15:21:04.315: E/AndroidRuntime(942): java.lang.RuntimeException: Expecting menu, got TabHost 
11-10 15:21:04.315: E/AndroidRuntime(942): at android.view.MenuInflater.parseMenu(MenuInflater.java:143) 
11-10 15:21:04.315: E/AndroidRuntime(942): at android.view.MenuInflater.inflate(MenuInflater.java:110) 
11-10 15:21:04.315: E/AndroidRuntime(942): at com.example.famous.movies.sounds_.MainActivity.onCreateOptionsMenu(MainActivity.java:46) 
11-10 15:21:04.315: E/AndroidRuntime(942): at android.app.Activity.onCreatePanelMenu(Activity.java:2476) 
11-10 15:21:04.315: E/AndroidRuntime(942): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:393) 
11-10 15:21:04.315: E/AndroidRuntime(942): at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:747) 
11-10 15:21:04.315: E/AndroidRuntime(942): at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:2913) 
11-10 15:21:04.315: E/AndroidRuntime(942): at android.os.Handler.handleCallback(Handler.java:615) 
11-10 15:21:04.315: E/AndroidRuntime(942): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-10 15:21:04.315: E/AndroidRuntime(942): at android.os.Looper.loop(Looper.java:137) 
11-10 15:21:04.315: E/AndroidRuntime(942): at android.app.ActivityThread.main(ActivityThread.java:4745) 
11-10 15:21:04.315: E/AndroidRuntime(942): at java.lang.reflect.Method.invokeNative(Native Method) 
11-10 15:21:04.315: E/AndroidRuntime(942): at java.lang.reflect.Method.invoke(Method.java:511) 
11-10 15:21:04.315: E/AndroidRuntime(942): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
11-10 15:21:04.315: E/AndroidRuntime(942): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
11-10 15:21:04.315: E/AndroidRuntime(942): at dalvik.system.NativeStart.main(Native Method) 

어떻게 해결할 수 있습니까? 두 개의 탭을 넣었지만 노래는 첫 번째 탭에 있습니다. 여기에 코드 자바입니다 : 처음에 사실

public class MainActivity extends TabActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Gestion des onglets 

     // Tout d'abord on récupère les ressources qui seront utilisés plus tard : 
     Resources res = getResources(); 
     // On prépare les éléments nécessaires pour chaque onglet : 
     TabHost tabHost = getTabHost(); 
     TabHost.TabSpec spec; 
     Intent intent; 



     // on lie nos onglets à la principale activity : 
     // ONGLET 1   
     intent = new Intent().setClass(this, Tab1.class); 
     spec = tabHost.newTabSpec("Widget").setIndicator("Cinema", res.getDrawable(R.drawable.movies)).setContent(intent); 
     tabHost.addTab(spec); 

     // ONGLET 2 
     intent = new Intent().setClass(this, Tab2.class); 
     spec = tabHost.newTabSpec("Form").setIndicator("Infos", res.getDrawable(R.drawable.infos)).setContent(intent); 
     tabHost.addTab(spec); 

     // On choisit l'onglet par défaut 
     tabHost.setCurrentTab(0); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.layout.activity_main, menu); 
     return true; 
    } 
} 



public class Tab1 extends Activity { 

private MediaPlayer mPlayer = null; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.onglet1);   

    final int sound11 = R.raw.carjacker; 
    final int sound12 = R.raw.petitesoeur; 
    final int sound13 = R.raw.cracherlama; 
    final int sound14 = R.raw.maitresse; 
    final int sound21 = R.raw.gandalfen; 
    final int sound22 = R.raw.gandalf; 
    final int sound23 = R.raw.gollum; 
    final int sound24 = R.raw.gollumen; 
    final int sound31 = R.raw.pasdebraspasdechocolat; 
    final int sound32 = R.raw.sparta; 
    final int sound33 = R.raw.sabre; 
    final int sound34 = R.raw.darkvador; 
    final int sound41 = R.raw.back; 
    final int sound42 = R.raw.fightclub; 
    final int sound43 = R.raw.forrestgump; 
    final int sound44 = R.raw.iamyourfather;  
    final int sound51 = R.raw.loki; 
    final int sound52 = R.raw.dinercon1; 
    final int sound53 = R.raw.gollum; 
    final int sound54 = R.raw.gollum; 
    /* final int sound61 = R.raw.dinercondroit4; 
    final int sound62 = R.raw.dinerconfemme5; 
    final int sound63 = R.raw.dinerconchampion6; 
    final int sound64 = R.raw.dinerconsonne7; 
    */ 
    generateSoundOnButton(sound11, R.id.btn11); 
    generateSoundOnButton(sound12, R.id.btn12); 
    generateSoundOnButton(sound13, R.id.btn13); 
    generateSoundOnButton(sound14, R.id.btn14); 
    generateSoundOnButton(sound21, R.id.btn21); 
    generateSoundOnButton(sound22, R.id.btn22);   
    generateSoundOnButton(sound23, R.id.btn23); 
    generateSoundOnButton(sound24, R.id.btn24); 
    generateSoundOnButton(sound31, R.id.btn31); 
    generateSoundOnButton(sound32, R.id.btn32); 
    generateSoundOnButton(sound33, R.id.btn33); 
    generateSoundOnButton(sound34, R.id.btn34); 
    generateSoundOnButton(sound41, R.id.btn41); 
    generateSoundOnButton(sound42, R.id.btn42); 
    generateSoundOnButton(sound43, R.id.btn43); 
    generateSoundOnButton(sound44, R.id.btn44); 
    generateSoundOnButton(sound51, R.id.btn51); 
    generateSoundOnButton(sound52, R.id.btn52); 
    generateSoundOnButton(sound53, R.id.btn53); 
    generateSoundOnButton(sound54, R.id.btn54); 
    /* 
    generateSoundOnButton(sound61, R.id.btn61); 
    generateSoundOnButton(sound62, R.id.btn62); 
    generateSoundOnButton(sound63, R.id.btn63); 
    generateSoundOnButton(sound64, R.id.btn64); 
    */ 
} 


    public void generateSoundOnButton(final int soundId, int idButton) { 

     final ImageButton btn = (ImageButton) findViewById(idButton); 

     btn.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) {  
       playSound(soundId);     
      } 

      }); 
    } 


    @Override 
    public void onPause() { 
     super.onPause(); 
     if(mPlayer != null) { 
      mPlayer.stop(); 
      mPlayer.release();   
     } 
    } 

    private void playSound(int resId) {  

     if(mPlayer != null) { 
      mPlayer.stop(); 
      mPlayer.release(); 
     } 
     mPlayer = MediaPlayer.create(this, resId); 
     mPlayer.start(); 
    } 

} 



public class Tab2 extends Activity { 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.onglet2);   
    }  
} 

버그와이 방법없이 아주 잘 작동하고 있었기 때문에 나는 메도 mPlayer.stop()를 제거, 그래서 지금 문제라고 생각하지만 때 이 방법을 다시 추가해도 아무 일도 일어나지 않았습니다. 동일한 실수가 있습니다. 안드로이드에 문제없이 올바르게 사운드를 재생할 수있는 좋은 방법이 있습니까?

모든 도움과 조언을 보내 주시면 감사하겠습니다. 의견이나 질문이 있으면 주저하지 마십시오.

도움 주셔서 감사합니다.

+0

오류 로그에 메뉴에 문제가 있음이 나타났습니다. Android 4 이상에서 실행 중이십니까? – user802421

+0

메모리에 관한 메시지는 오류가 아니지만 UI 스레드의 코드가 너무 많습니다. 실제 오류는 다음과 같습니다. 중요11-10 15 : 21 : 04.315 : E/AndroidRuntime (942) : java.lang.RuntimeException : 예상되는 메뉴, TabHost – Simon

+0

예 AVD 관리자가 ICS 4.1 (Eclipse 포함) 이게 문제가 되나요 ? 그리고 모든 버전에서 작동하도록 Android 2.1로 앱을 만듭니다. 메뉴의 오류를 수정하려면 어떻게해야합니까? 나는 완벽하게 작동하고 현재 작동하지 않는 오래된 안정 버전을 기록했습니다 ... – sangoku66

답변

0

예. 그렇지만 이미 좋아합니다.

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_settings" 
     android:title="@string/menu_settings" 
     android:orderInCategory="100" /> 
</menu> 

내가 입술에 세 개의 파일이/레이아웃 : :이 코드/메뉴 고해상도의 activity_main.xml이

<?xml version="1.0" encoding="utf-8"?> 

<!-- MISE EN PLACE DE LA BASE DE NOS 3 ONGLETS --> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#66FF99"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="5dp" 
     android:background="#E2F0FF"> 

     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="#FFFFFF" 
      /> 

     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:padding="5dp" 
      android:background="#E2F0FF" /> 
    </LinearLayout> 
</TabHost> 

과 동일 onglet1.xml :이 코드 activity_main.xml를 지금은 정말 중요하지 않습니다 동일한 tab2.xml onglet2.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linearLayoutOnglet1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#E2F2FF" 
    android:orientation="vertical" 
    android:weightSum="1.0" > 
<!-- Ligne 1 --> 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/linearLayoutOnglet1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#E2F2FF" 
     android:orientation="horizontal" 
     android:weightSum="1.0" > 

     <ImageButton 
      android:id="@+id/btn12" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/petitesoeur" /> 

     <ImageButton 
      android:id="@+id/btn11" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/carjacker" /> 

     <ImageButton 
      android:id="@+id/btn13" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/cracherlama" /> 

     <ImageButton 
      android:id="@+id/btn14" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/maitresse" /> 
    </LinearLayout> 

<!-- Ligne 2 --> 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/linearLayoutOnglet1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#E2F2FF" 
     android:orientation="horizontal" 
     android:weightSum="1.0" > 


     <ImageButton 
      android:id="@+id/btn21" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/gandalfen" /> 

     <ImageButton 
      android:id="@+id/btn22" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/gandalf" /> 

     <ImageButton 
      android:id="@+id/btn23" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/gollum" /> 

     <ImageButton 
      android:id="@+id/btn24" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/gollumen" /> 
    </LinearLayout> 

    <!-- Ligne 3 --> 
     <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/linearLayoutOnglet1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#E2F2FF" 
     android:orientation="horizontal" 
     android:weightSum="1.0" > 


     <ImageButton 
      android:id="@+id/btn31" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/pasdebraspasdechocolat" /> 

     <ImageButton 
      android:id="@+id/btn32" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/sparta" /> 

     <ImageButton 
      android:id="@+id/btn33" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/sabre" /> 

     <ImageButton 
      android:id="@+id/btn34" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/darkvador" /> 
    </LinearLayout> 


    <!-- Ligne 4 --> 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/linearLayoutOnglet1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#E2F2FF" 
     android:orientation="horizontal" 
     android:weightSum="1.0" > 


     <ImageButton 
      android:id="@+id/btn41" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/back" /> 

     <ImageButton 
      android:id="@+id/btn42" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/fightclub" /> 

     <ImageButton 
      android:id="@+id/btn43" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/forrestgump" /> 

     <ImageButton 
      android:id="@+id/btn44" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/darkvadorpereen" /> 
    </LinearLayout> 


    <!-- Ligne 5 --> 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/linearLayoutOnglet1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#E2F2FF" 
     android:orientation="horizontal" 
     android:weightSum="1.0" > 


     <ImageButton 
      android:id="@+id/btn51" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/loki" /> 

     <ImageButton 
      android:id="@+id/btn52" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/dinercon1" /> 

     <ImageButton 
      android:id="@+id/btn53" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/gollum" /> 

     <ImageButton 
      android:id="@+id/btn54" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/gollum" /> 
    </LinearLayout> 
    </LinearLayout> 
    <!-- Ligne 6 --> 
    <!-- 
     <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/linearLayoutOnglet1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#E2F2FF" 
     android:orientation="horizontal" 
     android:weightSum="1.0" > 


     <ImageButton 
      android:id="@+id/btn61" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/dinercondroit4" /> 

     <ImageButton 
      android:id="@+id/btn62" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/dinerconfemme5" /> 

     <ImageButton 
      android:id="@+id/btn63" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/dinerconchampion6" /> 

     <ImageButton 
      android:id="@+id/btn64" 
      android:layout_width="90px" 
      android:layout_height="110px" 
      android:layout_weight="0.25" 
      android:src="@drawable/dinerconsonne7" /> 
    </LinearLayout> 
    --> 

그리고 ...

을 : 모든 노래와 TAB1는 (? 난 더 다른 사람의 모든 XML 코드를 ... 쓸 수있는 솔루션이없는 생각)