2014-11-25 3 views
1

내 문제는 다음과 같습니다. 정말 간단한 앱을 만들고 싶습니다. 버튼을 누르면 노래가 재생됩니다.Android MediaPlayer 만들기 실패

public class MainActivity extends ActionBarActivity { 

int counter; 
Button add1; 
Button sub1; 
Button sound; 
TextView display; 
MediaPlayer mySound; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_main); 
     if (mySound==null){ 
      mySound = MediaPlayer.create(this, R.raw.tetris_theme); 
     } 
     else { mySound.release(); 
     } 

    sound = (Button) findViewById(R.id.button1); 
    display = (TextView) findViewById(R.id.textView2); 

    sound.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //TODO Auto-generated method stub 
      if (mySound==null){ 
       display.setText("Error"); 
      } 
      else { 
       mySound.start(); 
      } 
     } 

    }); 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
     return rootView; 
    } 
} 


} 

내가 응용 프로그램을 실행하고 버튼을 누르면이

그래서 (내가 mySound가 null 여부를 확인 여부 때문에) "오류"표시 "소리", 그 의미 생각 그 mySound MediaPlayer를 I created는 null입니다. 나는 로그 캣을 확인하고 그것을 보여 다음

11-25 14:27:02.900: E/MediaPlayer(1026): error (1, -2147483648) 
11-25 14:27:02.920: D/MediaPlayer(1026): create failed: 
11-25 14:27:02.920: D/MediaPlayer(1026): java.io.IOException: Prepare failed.: status=0x1 
11-25 14:27:02.920: D/MediaPlayer(1026): at android.media.MediaPlayer.prepare(Native Method) 
11-25 14:27:02.920: D/MediaPlayer(1026): at   android.media.MediaPlayer.create(MediaPlayer.java:850) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  com.example.simpleapp.MainActivity.onCreate(MainActivity.java:49) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  android.app.Activity.performCreate(Activity.java:5242) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2258) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  android.app.ActivityThread.access$800(ActivityThread.java:138) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  android.app.ActivityThread$H.handleMessage(ActivityThread.java:1209) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  android.os.Handler.dispatchMessage(Handler.java:102) 
11-25 14:27:02.920: D/MediaPlayer(1026): at android.os.Looper.loop(Looper.java:136) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  android.app.ActivityThread.main(ActivityThread.java:5026) 
11-25 14:27:02.920: D/MediaPlayer(1026): at java.lang.reflect.Method.invokeNative(Native Method) 
11-25 14:27:02.920: D/MediaPlayer(1026): at java.lang.reflect.Method.invoke(Method.java:515) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
11-25 14:27:02.920: D/MediaPlayer(1026): at  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
11-25 14:27:02.920: D/MediaPlayer(1026): at dalvik.system.NativeStart.main(Native Method) 

내가 준비가 실패했기 때문에, 수단이 실패 만드는 것이 추측하지만, 그 이유는 무엇입니까? 이 웹 사이트에서 이미이 문제를 검색 한 결과 수 백 가지의 사례가 발견되었지만 해결 방법 중 이 없다고 생각합니다.

재생하려는 파일이 mp3이며 내 R.raw 폴더에 있습니다. 아무런 문제없이 PC에서 재생할 수 있으므로 손상되거나 손상 될 수 없습니다.

나는 이미 .ogg와 .aac과 같은 다른 유형으로 시도했지만 아무것도 (!!) 작동하지 않습니다.

답변

2

발생합니다. MediaPlayer 개체에 연결된 리소스가 없으므로 null이 반환됩니다.

파일에 특수 문자가 있습니다. 특수 문자를 제거하면 소문자 여야합니다.

mySound= MediaPlayer.create(this, R.raw.tetristheme); 

미디어 파일은 이제

+0

흠이 시도 미디어 재생을 시작 mySound.start()를 사용할 수있는 이름 tetristheme

에있을 shoouldf하지만 작업 ... 같은 오류가 돌아가신't. 나는 이유를 알 수 없다. 어쨌든 제안 해 주셔서 감사합니다 – masterC

+0

나에게도 효과가 없었습니다 ... 그밖에 무엇을 할 수 있습니까? –