2012-12-14 4 views
0

Je suis un débutant, je suis en train de faire une application très simple, un bouton et 4 fichiers .ogg dans le dossier des actifs, ce bouton jouerait un fichier aléatoire de la ci-dessus mentionné .Jouer le fichier sonore aléatoire sur le bouton presse - Android

J'ai seulement une classe principale et une disposition.

Voici ce que j'ai fait, le code ne montre aucune erreur, mais l'application se bloque immédiatement lors du lancement sur l'émulateur.

Ma principale classe: -

MediaPlayer player; 
AssetFileDescriptor descriptor; 
private String[] filelist; 

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

player = new MediaPlayer(); 

Button playSound = (Button)findViewById(R.id.button1); 

AssetManager aMan = this.getAssets(); 
try 
{ 
filelist = aMan.list("/assets"); 
} catch (IOException e1) { 
    e1.printStackTrace(); 
} 

playSound.setOnClickListener(new View.OnClickListener() 
{   
    public void onClick(View v) 
    { 
     Random randomGenerator = new Random(); 
     int randomInt = randomGenerator.nextInt(filelist.length); 

     try 
     { 
      String mediaFile = filelist[randomInt]; 
      descriptor = getAssets().openFd(mediaFile); 
       player.setDataSource(descriptor.getFileDescriptor(),descriptor.getStartOffset(),descriptor.getLength()); 
      descriptor.close(); 
      player.prepare(); 
         player.start(); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}); 
} 

Ma mise en page: -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:src="@drawable/background" 
    android:contentDescription="@string/desc" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginBottom="154dp" 
    android:layout_marginRight="92dp" 
    android:text="@string/button1" /> 

</RelativeLayout> 

Voici le logcat: -

12-14 19:36:56.062: D/AndroidRuntime(540): Shutting down VM 
12-14 19:36:56.062: W/dalvikvm(540): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
12-14 19:36:56.072: E/AndroidRuntime(540): FATAL EXCEPTION: main 
12-14 19:36:56.072: E/AndroidRuntime(540): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mbawardi.layan/com.mbawardi.layan.MainActivity}: java.lang.NullPointerException 
12-14 19:36:56.072: E/AndroidRuntime(540): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
12-14 19:36:56.072: E/AndroidRuntime(540): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
12-14 19:36:56.072: E/AndroidRuntime(540): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
12-14 19:36:56.072: E/AndroidRuntime(540): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
12-14 19:36:56.072: E/AndroidRuntime(540): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-14 19:36:56.072: E/AndroidRuntime(540): at android.os.Looper.loop(Looper.java:137) 
12-14 19:36:56.072: E/AndroidRuntime(540): at android.app.ActivityThread.main(ActivityThread.java:4340) 
12-14 19:36:56.072: E/AndroidRuntime(540): at java.lang.reflect.Method.invokeNative(Native Method) 
12-14 19:36:56.072: E/AndroidRuntime(540): at java.lang.reflect.Method.invoke(Method.java:511) 
12-14 19:36:56.072: E/AndroidRuntime(540): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-14 19:36:56.072: E/AndroidRuntime(540): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-14 19:36:56.072: E/AndroidRuntime(540): at dalvik.system.NativeStart.main(Native Method) 
12-14 19:36:56.072: E/AndroidRuntime(540): Caused by: java.lang.NullPointerException 
12-14 19:36:56.072: E/AndroidRuntime(540): at com.mbawardi.layan.MainActivity.onCreate(MainActivity.java:39) 
12-14 19:36:56.072: E/AndroidRuntime(540): at android.app.Activity.performCreate(Activity.java:4465) 
12-14 19:36:56.072: E/AndroidRuntime(540): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
12-14 19:36:56.072: E/AndroidRuntime(540): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
12-14 19:36:56.072: E/AndroidRuntime(540): ... 11 more 
12-14 19:36:59.042: I/Process(540): Sending signal. PID: 540 SIG: 9 
12-14 19:37:06.032: D/AndroidRuntime(556): Shutting down VM 
12-14 19:37:06.032: W/dalvikvm(556): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
12-14 19:37:06.042: E/AndroidRuntime(556): FATAL EXCEPTION: main 
12-14 19:37:06.042: E/AndroidRuntime(556): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mbawardi.layan/com.mbawardi.layan.MainActivity}: java.lang.NullPointerException 
12-14 19:37:06.042: E/AndroidRuntime(556): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
12-14 19:37:06.042: E/AndroidRuntime(556): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
12-14 19:37:06.042: E/AndroidRuntime(556): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
12-14 19:37:06.042: E/AndroidRuntime(556): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
12-14 19:37:06.042: E/AndroidRuntime(556): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-14 19:37:06.042: E/AndroidRuntime(556): at android.os.Looper.loop(Looper.java:137) 
12-14 19:37:06.042: E/AndroidRuntime(556): at android.app.ActivityThread.main(ActivityThread.java:4340) 
12-14 19:37:06.042: E/AndroidRuntime(556): at java.lang.reflect.Method.invokeNative(Native Method) 
12-14 19:37:06.042: E/AndroidRuntime(556): at java.lang.reflect.Method.invoke(Method.java:511) 
12-14 19:37:06.042: E/AndroidRuntime(556): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-14 19:37:06.042: E/AndroidRuntime(556): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-14 19:37:06.042: E/AndroidRuntime(556): at dalvik.system.NativeStart.main(Native Method) 
12-14 19:37:06.042: E/AndroidRuntime(556): Caused by: java.lang.NullPointerException 
12-14 19:37:06.042: E/AndroidRuntime(556): at com.mbawardi.layan.MainActivity.onCreate(MainActivity.java:39) 
12-14 19:37:06.042: E/AndroidRuntime(556): at android.app.Activity.performCreate(Activity.java:4465) 
12-14 19:37:06.042: E/AndroidRuntime(556): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
12-14 19:37:06.042: E/AndroidRuntime(556): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
12-14 19:37:06.042: E/AndroidRuntime(556): ... 11 more 

Le deuxième logcat après l'application ρяσѕρєя solution de K: -

12-14 20:19:02.227: D/AndroidRuntime(537): Shutting down VM 
12-14 20:19:02.237: W/dalvikvm(537): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
12-14 20:19:02.247: E/AndroidRuntime(537): FATAL EXCEPTION: main 
12-14 20:19:02.247: E/AndroidRuntime(537): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mbawardi.layan/com.mbawardi.layan.MainActivity}: java.lang.NullPointerException 
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
12-14 20:19:02.247: E/AndroidRuntime(537): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-14 20:19:02.247: E/AndroidRuntime(537): at android.os.Looper.loop(Looper.java:137) 
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread.main(ActivityThread.java:4340) 
12-14 20:19:02.247: E/AndroidRuntime(537): at java.lang.reflect.Method.invokeNative(Native Method) 
12-14 20:19:02.247: E/AndroidRuntime(537): at java.lang.reflect.Method.invoke(Method.java:511) 
12-14 20:19:02.247: E/AndroidRuntime(537): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-14 20:19:02.247: E/AndroidRuntime(537): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-14 20:19:02.247: E/AndroidRuntime(537): at dalvik.system.NativeStart.main(Native Method) 
12-14 20:19:02.247: E/AndroidRuntime(537): Caused by: java.lang.NullPointerException 
12-14 20:19:02.247: E/AndroidRuntime(537): at com.mbawardi.layan.MainActivity.onCreate(MainActivity.java:42) 
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.Activity.performCreate(Activity.java:4465) 
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
12-14 20:19:02.247: E/AndroidRuntime(537): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
12-14 20:19:02.247: E/AndroidRuntime(537): ... 11 more 
+0

poster vos erreurs de LogCat. –

+0

vient de l'ajouter, merci – mnb

+1

Qu'y a-t-il à la ligne 39? – codeMagic

Répondre

0

supprimez import android.R; des importations et importez votre fichier R projet. ou utiliser

descriptor = MainActivity.this.getAssets().openFd(mediaFile); 

au lieu de

descriptor = MainActivity.this.getAssets().openFd("audioogg/"+mediaFile); 
+0

Merci, mais malheureusement ne fonctionne toujours pas, essayé les deux (" ") et ("/") , le logcat est ajouté dans la requête principale – mnb

+0

@ user1905031: assurez-vous que vous utilisez la bonne mise en page pour 'setContentView (R.layout.activity_list_item);' –

+0

c'est la seule mise en page que j'ai, son contenu est affiché dans l'op .. Merci – mnb

Questions connexes