2012-01-04 13 views
6

मेरे पास .ogg ऑडियो फ़ाइल चलाने के लिए कोड है, जिसे मैंने इंटरनेट से डाउनलोड किया है। मैं कोई त्रुटि है, तो मैं इसे चला सकते हैं, लेकिन फिर ऐप्लिकेशन क्रैश:मैं एंड्रॉइड में ऑडियो फाइल कैसे चला सकता हूं?

package play.my.sound; 

import android.app.Activity; 
import android.media.AudioManager; 
import android.media.SoundPool; 
import android.media.SoundPool.OnLoadCompleteListener; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class PlaySound2Activity extends Activity { 
private SoundPool soundPool; 
private int soundID; 
boolean loaded = false; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    View view = findViewById(R.id.textView1); 
    view.setOnClickListener((OnClickListener) this); 
    // Set the hardware buttons to control the music 
    this.setVolumeControlStream(AudioManager.STREAM_MUSIC); 
    // Load the sound 
    soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { 
     public void onLoadComplete(SoundPool soundPool, int sampleId, 
       int status) { 
      loaded = true; 
     } 
    }); 
    soundID = soundPool.load("sound1.ogg", 1); 

} 

public boolean onTouch(View v, MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     // Getting the user sound settings 
     AudioManager audioManager = (AudioManager) getSystemService (AUDIO_SERVICE); 
     float actualVolume = (float) audioManager 
       .getStreamVolume(AudioManager.STREAM_MUSIC); 
     float maxVolume = (float) audioManager 
       .getStreamMaxVolume(AudioManager.STREAM_MUSIC); 
     float volume = actualVolume/maxVolume; 
     // Is the sound loaded already? 
     if (loaded) { 
      soundPool.play(soundID, volume, volume, 1, 0, 1f); 
      Log.e("Test", "Played sound"); 
     } 
    } 
    return false; 
} 
} 

मुझे लगता है कि मैं दो समस्याएं हैं:

  1. मैं main.xml फ़ाइल में इस डाल:

     
    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView android:text="Click on the screen to start playing" 
        android:id="@+id/textView1" android:layout_width="fill_parent" 
        android:layout_height="fill_parent"></TextView> 
    </LinearLayout> 
    
    और मैं पता नहीं है कि यह सही है या नहीं।

  2. मैंने sound1.ogg को workspace->SoundPlay2 फ़ोल्डर में फ़ाइल डाली क्योंकि रेस फ़ोल्डर में मुझे समस्याएं थीं, और साथ ही, मैंने इसे दो रेज फ़ोल्डर्स में रखने की कोशिश की।

    [2012-01-04 19:38:16 - PlaySound2] Failed to install PlaySound2.apk on device 'emulator-5554': timeout 
    [2012-01-04 19:38:16 - PlaySound2] Launch canceled! 
    [2012-01-04 19:47:33 - PlaySound2] Error in an XML file: aborting build. 
    [2012-01-04 19:52:34 - PlaySound2] res\layout\main.xml:0: error: Resource entry main is already defined. 
    [2012-01-04 19:52:34 - PlaySound2] res\layout\main.out.xml:0: Originally defined here. 
    [2012-01-04 19:52:34 - PlaySound2] C:\Users\Natalia\workspace\PlaySound2\res\layout\main.out.xml:1: error: Error parsing XML: no element found 
    

    मैं "Android Sounds - Tutorial" से इस उदाहरण ले लिया:

यह मेरा कंसोल से है। मैं एक ऑडियो फ़ाइल, विशेष रूप से, एक .wav फ़ाइल खेलना चाहता हूं।

मुझे नहीं पता कि मीडिया मीडिया प्लेयर और उनकी विशेषता (डुरनशन, नमूना दर ...) में अनुमति देने वाली फ़ाइलों के बारे में मुझे कुछ जानकारी कहां मिल सकती है, क्या आप मुझे बता सकते हैं कि मुझे यह कहां मिल सकता है ??

+0

यह मेरी लॉग बिल्ली में गड़बड़ त्रुटि है: ई/एंड्रॉइड रनटाइम (739): java.lang.RuntimeException: गतिविधि शुरू करने में असमर्थ ComponentInfo {play.my.sound/play.my.sound.PlaySound2Activity}: जावा .lang.ClassCastException: play.my.sound.PlaySound2Activity को android.view पर नहीं डाला जा सकता है। $ OnClickListener –

+0

देखें क्यों आप सरल उत्तरों को खोजने के लिए Google में खोज नहीं करते हैं। Google में "समर्थित ऑडियो प्रारूप" की एक साधारण खोज http://developer.android.com/guide/appendix/media-formats.html उत्पन्न हुई। http://developer.android.com/guide/topics/media/mediaplayer.html – manjusg

उत्तर

1

किसी प्रकार का बजर खेलने के लिए उदाहरण। कच्चे फ़ोल्डर के अंतर्गत रेस फ़ोल्डर में मैं एक buzzer.wav

विधि इस बजर निभानी है:

 /** 
* Method to play an alarm sound to signal half time or full time. 
*/ 
private void playAlarm() { 
    MediaPlayer mp = MediaPlayer.create(this, 
      R.raw.buzzer); 
    mp.start(); 
    mp.setOnCompletionListener(new OnCompletionListener() { 

     @Override 
     public void onCompletion(MediaPlayer mp) { 
      mp.release(); 
     } 

    }); 

} 
+0

क्या यह विधि केवल .wav फ़ाइलों को चलाने के लिए है ?? मैं इसे अपने कोड में कहां जोड़ूं ?? धन्यवाद!! –

+0

मैंने ऐसा कुछ किया है लेकिन मैंने एक .ogg फ़ाइल का उपयोग किया है। जब मैं एक .wav फ़ाइल पेश करता हूं तो यह काम नहीं करता है। क्या मुझे इसके बारे में कोई विनिर्देश पता होना चाहिए? धन्यवाद!! –

1

मैंने पहले कक्षा SoundPool कभी नहीं देखा है, लेकिन मैं एक MediaPlayer कक्षा का उपयोग कर की सिफारिश करेंगे:

mMediaPlayer = new MediaPlayer(this, R.raw.yourfile); 
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mMediaPlayer.prepare(); 
mMediaPlayer.start(); 

सुनिश्चित करें कि आप में फ़ाइल डाल बनाओ फ़ोल्डर परियोजना/res/कच्चे/(या इसे बनाने के अगर यह मौजूद नहीं है)

इसके अलावा वहाँ कुछ अपने main.xml साथ कुछ गड़बड़ है। क्या आप इसे पोस्ट कर सकते हैं?

+0

मुझे बता सकता है कि मेरे कोड का कौन सा हिस्सा मुझे निकालने या बदलने के लिए बदलना है ?? –

+0

ईमानदार होने के लिए, यदि आपको नहीं पता कि क्या बदलना है, तो आप अपना कोड नहीं समझते हैं। अपने साउंडपूल से बातचीत करने वाली सभी लाइनों को हटाएं, फिर इसे पढ़ें: http://developer.android.com/reference/android/media/MediaPlayer.html – Force

3

res फ़ोल्डर में कच्चे फ़ोल्डर बनाएं और अपनी फ़ाइल को इसमें जोड़ें। तब

soundID = soundPool.load(R.raw.sound1, 1); 

का उपयोग कर फ़ाइल को चलाने और यह भी अपने main.xml समस्या के लिए इस post देखते हैं।

+0

मैंने soundID = soundPool.load लिखा है (R.raw.sound1, 1) ; लेकिन एक त्रुटि प्रकट होती है बेटा मैंने soundID = soundPool.load (यह, R.raw.sound1, 1) द्वारा बदल दिया है; और जब भी मैं इसे चलाता हूं, कोई ऐप क्रैश नहीं होता है !! –

+0

view.setOnClickListener ((OnClickListener) यह); यह लाइन क्रैश हो जाती है क्योंकि आपने View.onclicklistner को लागू किया है। गतिविधि के लिए इंटरफ़ेस View.onclicklistner लागू करें। – manjusg

+0

उस ट्यूटोरियल की जांच करें जहां से आपने कोड लिया था। उन्होंने Ontouchlistener लागू किया है। लाइन से अपनी कोड लाइन की तुलना करें। – manjusg

संबंधित मुद्दे