2013-03-19 15 views
9

मैं एक ऑडियो रिकॉर्डर बना रहा हूं जिसे रिकॉर्ड की गई ध्वनि को वापस चलाने की आवश्यकता है। मैं ऑडियो वापस खेलने में बहुत परेशानी में भाग रहा हूँ। मुझे पता है कि फ़ाइल मौजूद है क्योंकि मैंने इसे अपने एसडी कार्ड पर एक फ़ोल्डर में अलग कर दिया है, लेकिन किसी कारण से यह इसे वापस नहीं चला सकता है।एंड्रॉइड मीडियाप्लेयर तैयार विफल: स्थिति = 0x1

public class RecorderEditActivity extends SherlockActivity implements 
    DatabaseHelper.MetadataListener { 

private long position; 

private Button playButton = null; 
private TextView date = null; 
private EditText title = null; 
private EditText notes = null; 
private Button saveButton = null; 

private MediaPlayer mediaPlayer = null; 
private boolean isPlaying = false; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.edit_item); 

    position = getIntent().getExtras().getLong(DatabaseHelper.KEY_ROWID); 

    playButton = (Button) findViewById(R.id.play); 
    date = (TextView) findViewById(R.id.recording_date); 
    title = (EditText) findViewById(R.id.edit_title); 
    notes = (EditText) findViewById(R.id.edit_notes); 
    saveButton = (Button) findViewById(R.id.save_edit_button); 

    mediaPlayer = new MediaPlayer(); 

    DatabaseHelper.getInstance(getApplicationContext()).getMetadataAsync(
      position, this); 

    playButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!isPlaying) { 
       playButton.setText(R.string.stop_text); 
       try { 
        mediaPlayer = new MediaPlayer(); 
        mediaPlayer 
          .setDataSource("sdcard/test/" 
            + date.toString() + ".3gp"); 
        mediaPlayer.prepare(); 
        mediaPlayer.start(); 
        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
         @Override 
         public void onCompletion(MediaPlayer mp) { 
          mp.stop(); 
         } 
        }); 
       } catch (Exception e) { 
        Log.e(e.getClass().getName(), e.getMessage(), e); 
       } 
      } else { 
       playButton.setText(R.string.play_text); 
       mediaPlayer.release(); 
      } 
      isPlaying = !isPlaying; 
     } 
    }); 

यहाँ LogCat से त्रुटियाँ हैं:

03-20 00:33:40.963: E/MediaPlayer(21268): error (1, -2147483648) 
03-20 00:33:40.963: E/java.io.IOException(21268): Prepare failed.: status=0x1 
03-20 00:33:40.963: E/java.io.IOException(21268): java.io.IOException: Prepare failed.: status=0x1 
03-20 00:33:40.963: E/java.io.IOException(21268): at android.media.MediaPlayer.prepare(Native Method) 
03-20 00:33:40.963: E/java.io.IOException(21268): at com.packagename.soundrecorder.RecorderEditActivity$1.onClick(RecorderEditActivity.java:56) 
03-20 00:33:40.963: E/java.io.IOException(21268): at android.view.View.performClick(View.java:4204) 
03-20 00:33:40.963: E/java.io.IOException(21268): at android.view.View$PerformClick.run(View.java:17355) 
03-20 00:33:40.963: E/java.io.IOException(21268): at android.os.Handler.handleCallback(Handler.java:725) 
03-20 00:33:40.963: E/java.io.IOException(21268): at android.os.Handler.dispatchMessage(Handler.java:92) 
03-20 00:33:40.963: E/java.io.IOException(21268): at android.os.Looper.loop(Looper.java:137) 
03-20 00:33:40.963: E/java.io.IOException(21268): at android.app.ActivityThread.main(ActivityThread.java:5041) 
03-20 00:33:40.963: E/java.io.IOException(21268): at java.lang.reflect.Method.invokeNative(Native Method) 
03-20 00:33:40.963: E/java.io.IOException(21268): at java.lang.reflect.Method.invoke(Method.java:511) 
03-20 00:33:40.963: E/java.io.IOException(21268): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
03-20 00:33:40.963: E/java.io.IOException(21268): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
03-20 00:33:40.963: E/java.io.IOException(21268): at dalvik.system.NativeStart.main(Native Method) 

उम्मीद है कि किसी की मदद कर सकते हैं मुझे व्याख्या और इस समस्या को हल

यहाँ मेरी कोड है। मैंने शोध का एक टन किया है और कुछ भी मैं मदद करता हूं। धन्यवाद :)

+2

अपने कोड में 'mediaPlayer' वस्तु दो बार अर्थात एक बार छोरों के बाहर और फिर' onClick' समारोह में बनाया जा रहा है। क्या आपने 'getInstance' कॉल से पहले 'MediaPlayer' ऑब्जेक्ट को निकालने का प्रयास किया है? – Ganesh

+0

कृपया उस फ़ाइल को पोस्ट करें जिसे आप –

+2

चलाने की कोशिश कर रहे हैं, क्या आपके पास आपकी मेनिफेस्ट फ़ाइल में <उपयोग-अनुमति एंड्रॉइड: name = "android.permission.READ_EXTERNAL_STORAGE" /> है? –

उत्तर

7

मैंने इसे समझ लिया: सामान्य रूप से बेवकूफ गलतियों। मैं बाहरी बाहरी स्मृति अनुमति को पढ़ने के लिए भूल गया, और मेरे पास उपरोक्त आपकी टिप्पणी के कारण वसीली को उस फिक्स के लिए धन्यवाद देना है। दूसरी बात यह थी कि मैंने अपनी तिथि टेक्स्टव्यू पर getText() को कॉल नहीं किया था, इसलिए यह फ़ाइल नाम ठीक से सेट नहीं किया गया था।

+0

क्या आप इसे वैध उत्तर के रूप में स्वीकार कर सकते हैं। धन्यवाद। – shkschneider

3

मुझे लगता है कि आप पर गलत DataSource पर सेट होने के कारण समस्या का सामना कर रहे हैं। आप निम्न परिवर्तन

mediaPlayer.setDataSource("file://sdcard/test/" 
      + date.toString() + ".3gp"); 

मैं इस परिवर्तन के साथ लगता है के साथ अपने setDataSource प्रयास करें कर सकते हैं, अपने कोड काम करना चाहिए ठीक

संपादित करें: कारण के बारे में अधिक जानकारी के लिए इस पोस्ट MediaPlayer Preparing Failed की जांच करें file:// लगाकर पीछे आपके फ़ाइल नाम के लिए।

1

मुझे आशा है कि निम्नलिखित कोड में मदद मिलेगी:

String soundPath = Environment.getExternalStorageDirectory().getPath() + "test/" + date.toString() + ".mp3"; 
mediaPlayer.setDataSource(soundPath); 
संबंधित मुद्दे