Android - error opening trace file: No such file or directory

10,465

Try moving mediaplayer = MediaPlayer.create(this, song); to inside onCreate().

Since the Activity isn't fully initialized until onCreate(), this may be the cause of the NPE.

However, the next problem is that you create the MediaPlayer with song being initially 0 (int has a default value of 0 when it is an instance variable). So if moving MediaPlayer.create solves this NPE, the next error will be something about not being able to find the resource. Therefore, call MediaPlayer.create once song holds on to something useful.

Maybe something like this will work.

public class LayoutActivity extends Activity {

  int song;
  MediaPlayer mediaPlayer;

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

    RadioGroup radgrp = (RadioGroup) findViewById(R.id.radiogroup);
    radgrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

      @Override
      public void onCheckedChanged(RadioGroup group, int checkedId) {
        switch (checkedId){
          case R.id.dance:
            song = R.raw.redalert;
            break;
          case R.id.rap:
            song = R.raw.cannedheat;
            break;
          case R.id.rock:
            song = R.raw.movmou8105;
            break;
        }


        mediaplayer = MediaPlayer.create(LayoutActivity.this, song);
        try {
          mediaplayer.prepare();
          mediaplayer.start();
        } catch (IllegalStateException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
    });
  }
}

And if song isn't used anywhere else, you can keep it in the scope of onCheckedChanged().

Share:
10,465
Jarryd Goodman
Author by

Jarryd Goodman

Updated on June 15, 2022

Comments

  • Jarryd Goodman
    Jarryd Goodman almost 2 years

    I'm getting a weird list of errors, some seemingly disconnected but I have no way to tell as I can't even get my App to load to debug. It's a very simple app, 3 radio buttons in a radio group and each one will trigger a different song to play.

    I will start by posting my Manifest, my activity file, and layout then post the error log.

    Manifest:

        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.cis298.lab2"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
    
            <activity 
                android:label = "@string/app_name"
                android:name = ".LayoutActivity">
                <intent-filter >
                    <action android:name = "android.intent.action.MAIN" />
    
                    <category android:name = "android.intent.category.LAUNCHER" />
    
                </intent-filter>
                ></activity>
        </application>
    
    </manifest>
    

    LayoutActivity:

    package com.cis298.lab2;
    
    import java.io.IOException;
    
    import com.cis298.lab2.R;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.media.MediaPlayer;
    import android.widget.RadioGroup;
    
    public class LayoutActivity extends Activity {
    
        int song;
        MediaPlayer mediaplayer = MediaPlayer.create(this, song);
    
        public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout);
            try {
                mediaplayer.prepare();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            RadioGroup radgrp = (RadioGroup) findViewById(R.id.radiogroup);
            radgrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    switch (checkedId){
                    case R.id.dance:
                        song = R.raw.redalert;
                        mediaplayer.start();
                        break;
                    case R.id.rap:
                        song = R.raw.cannedheat;
                        break;
                    case R.id.rock:
                        song = R.raw.movmou8105;
                        break;}
                }
            });
        }
    }
    

    layout:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
       <RadioGroup
           android:id="@+id/radiogroup"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_alignParentLeft="true"
           android:layout_alignParentTop="true"
           android:orientation="vertical" >
    
           <RadioButton
               android:id="@+id/rock"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="Play Rock" />
    
           <RadioButton
               android:id="@+id/rap"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="Play Rap" 
               android:checked="true"/>
    
           <RadioButton
               android:id="@+id/dance"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:text="Play Dance"
               android:textAlignment="center" />
    
       </RadioGroup>
    
    </RelativeLayout>
    

    Log:

    02-21 20:34:05.044: D/AndroidRuntime(322): Shutting down VM 02-21 20:34:05.044: W/dalvikvm(322): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 02-21 20:34:05.094: E/AndroidRuntime(322): FATAL EXCEPTION: main 02-21 20:34:05.094: E/AndroidRuntime(322): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.cis298.lab2/com.cis298.lab2.LayoutActivity}: java.lang.NullPointerException 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.os.Handler.dispatchMessage(Handler.java:99) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.os.Looper.loop(Looper.java:123) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread.main(ActivityThread.java:4627) 02-21 20:34:05.094: E/AndroidRuntime(322): at java.lang.reflect.Method.invokeNative(Native Method) 02-21 20:34:05.094: E/AndroidRuntime(322): at java.lang.reflect.Method.invoke(Method.java:521) 02-21 20:34:05.094: E/AndroidRuntime(322): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 02-21 20:34:05.094: E/AndroidRuntime(322): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 02-21 20:34:05.094: E/AndroidRuntime(322): at dalvik.system.NativeStart.main(Native Method) 02-21 20:34:05.094: E/AndroidRuntime(322): Caused by: java.lang.NullPointerException 02-21 20:34:05.094: E/AndroidRuntime(322): at android.content.ContextWrapper.getResources(ContextWrapper.java:80) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.media.MediaPlayer.create(MediaPlayer.java:641) 02-21 20:34:05.094: E/AndroidRuntime(322): at com.cis298.lab2.LayoutActivity.(LayoutActivity.java:15) 02-21 20:34:05.094: E/AndroidRuntime(322): at java.lang.Class.newInstanceImpl(Native Method) 02-21 20:34:05.094: E/AndroidRuntime(322): at java.lang.Class.newInstance(Class.java:1429) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 02-21 20:34:05.094: E/AndroidRuntime(322): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 02-21 20:34:05.094: E/AndroidRuntime(322): ... 11 more

    Any help would be greatly appreciated.

  • Jarryd Goodman
    Jarryd Goodman about 11 years
    This was my issue (having to move it into the onCreate method). Also, it is taking me 5+ minutes to upload the APK everytime. I looked into it and people were complaining about 90 seconds so something must be really wrong, any idea?
  • A--C
    A--C about 11 years
    We've all been new, and your question was nice and detailed :-) with new users, I always link to that meta question if they said my answer right since not all are familiar with how all of SO works. Anyways, welcome!