software शॉर्ट साउंड बजाने का सही तरीका Android?




android system download (3)

@Rikonator साउंडपूल के साथ वहां सही रास्ते पर है। यह उस तरह की कार्यक्षमता के लिए बहुत अधिक अनुकूल है जिसके बाद आप हैं।

यदि आप वैसे भी मीडियापेयर के साथ जाने का फैसला करते हैं, हालांकि, यूआई थ्रेड को लटकाए रखने से रोकने के लिए तैयारअनसून () विधि को मत भूलना। आप here मीडिया चलाने के बारे में अधिक पढ़ सकते हैं।

मैं एक एप्लिकेशन बना रहा हूं जिसमें स्क्रीन पर कई छवियां होंगी, ये छवियां बटन होंगी और जब टैप एक छोटी ध्वनि बजाएगा। मैंने इस पर शोध किया और केवल उस मौजूदा पद्धति को खोज सका जिसका उपयोग मैं ध्वनियों को बजाने के लिए कर रहा हूं, जो बिल्कुल भी उत्तरदायी नहीं लगता। मैं चाहता हूं कि ध्वनि जल्दी से बजाए और कई रैपिड टैपों के लिए उत्तरदायी है। मैं अनिश्चित था अगर यह एंड्रॉइड में भी संभव था।

मेरी आवाज़ को चलाने के लिए मैं जिस कोड का उपयोग कर रहा हूं वह यह है:

    Button sound1;
MediaPlayer  firstSound;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    firstSound = MediaPlayer.create(SoundActivity.this, R.raw.click);


    sound1 = (Button) findViewById(R.id.Sound1);


    beaver.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            firstSound.start();

            }

    });



    }

मेरा अंतराल मुद्दा शायद उस तरह से भी हो सकता है जिस तरह से मैं मीडिया प्लेयर ऑब्जेक्ट का उपयोग कर रहा हूं? मुझे लगता है कि यह मेरे फोन पर आसान होना चाहिए, एंड्रॉइड में ध्वनियों को कैसे खेलना है, इस पर किसी भी सुझाव की सराहना की जाती है।

धन्यवाद।

साउंड पूल की खोज के बाद से, मैंने इसका उपयोग करने के लिए अपना कोड संपादित किया है और यह पूरी तरह से काम करता है, नया कोड इस तरह दिखता है:

SoundPool soundPool;
HashMap<Integer, Integer> soundPoolMap;
int soundID = 1;


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


    soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
    soundPoolMap = new HashMap<Integer, Integer>();
    soundPoolMap.put(soundID, soundPool.load(this, R.raw.click, 1));

    sound1 = (Button) findViewById(R.id.bBeaver);


    sound1.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {

                    AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
              float curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
              float maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
              float leftVolume = curVolume/maxVolume;
              float rightVolume = curVolume/maxVolume;
              int priority = 1;
              int no_loop = 0;
              float normal_playback_rate = 1f;
              soundPool.play(soundID, leftVolume, rightVolume, priority, no_loop, normal_playback_rate);

            }

    });


    }

धन्यवाद


आप SoundPool उपयोग कर सकते हैं। यह वह फिट बैठता है जो आप पूरी तरह से करना चाहते हैं।

आपको प्रत्येक छवि (या बटन) के अनुरूप ध्वनि प्रभाव आईडी को स्टोर करने के लिए एक तरीके की आवश्यकता होगी।

शायद संबंधित ध्वनि प्रभाव आईडी को स्टोर करने के लिए बटन का विस्तार करें। और बटन को छूने पर आईडी से जुड़े ध्वनि प्रभाव को चलाने के लिए एक सामान्य साउंडपूल का उपयोग करें।

आप यहां साउंडपूल के बारे में अधिक पढ़ सकते हैं


MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.sound);

try {
    if (mp.isPlaying()) {
        mp.stop();
        mp.release();

        mp = MediaPlayer.create(getApplicationContext(), R.raw.sound);
    }

    mp.start();
} catch (Exception e) {
    e.printStackTrace();
}




android