android - बटन क्लिक एंड्रॉइड पर ध्वनि चलाएं




audio click (4)

ऐसा करने का सबसे अच्छा तरीका यह है कि मुझे लॉगकैट में दूसरे के बाद एक समस्या की खोज करने के बाद मिला

            MediaPlayer mp;
            mp = MediaPlayer.create(context, R.raw.sound_one);
            mp.setOnCompletionListener(new OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer mp) {
                    // TODO Auto-generated method stub
                    mp.reset();
                    mp.release();
                    mp=null;
                }

            });
            mp.start();

मीडिया प्लेयर को रिहा नहीं करना आपको लॉगकैट में यह त्रुटि देता है:

एंड्रॉइड: रिलीज किए बिना मीडियाप्लेयर को अंतिम रूप दिया गया

मीडिया प्लेयर को रीसेट नहीं करने से आपको यह त्रुटि लॉगकैट में मिलती है:

Android: mediaplayer went away with unhandled events

तो मीडिया प्लेयर का उपयोग करने के लिए सुरक्षित और सरल कोड खेलें।

एक ही गतिविधि / फ्रैगमेंट में एक से अधिक ध्वनियों को चलाने के लिए नए मीडिया प्लेयर बनाने के दौरान बस resid को बदलें

mp = MediaPlayer.create(context, R.raw.sound_two);

और इसे खेलते हैं!

मज़े करो!

क्लिक करते समय कच्चे से ध्वनि चलाने के लिए मैं बटन कैसे प्राप्त करूं? मैंने अभी आईडी बटन 1 के साथ एक बटन बनाया है, लेकिन जो भी कोड मैं लिखता हूं, सब गलत है।

import android.media.MediaPlayer;

public class BasicScreenActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_basic_screen);
    }

    Button one = (Button)this.findViewById(R.id.button1);
    MediaPlayer = mp;
    mp = MediaPlayer.create(this, R.raw.soho);
    zero.setOnCliclListener(new View.OnClickListener() )

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



}

मूल पोस्ट में दिए गए कोड में यह सबसे महत्वपूर्ण हिस्सा है।

Button one = (Button) this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){

    public void onClick(View v) {
        mp.start();
    }
});

इसे चरणबद्ध तरीके से समझाने के लिए:

Button one = (Button) this.findViewById(R.id.button1);

सबसे पहले ध्वनि बजाने के लिए इस्तेमाल होने वाले बटन का प्रारंभिकरण है। हम जिस बटन को हमें चाहिए उसे प्राप्त करने के लिए, हमने इसे निर्दिष्ट आईडी (इस उदाहरण के मामले में: R.id.button1 ) को पारित करने के लिए गतिविधि की findViewById का उपयोग किया है। हमने इसे एक Button रूप में डाला ताकि इसे वैरिएबल को असाइन करना आसान हो जिसे हम शुरू कर रहे हैं। इस काम के दायरे से बाहर कैसे काम करता है इस बारे में और बताते हुए। This एक संक्षिप्त अंतर्दृष्टि देता है कि यह कैसे काम करता है।

final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);

MediaPlayer को प्रारंभ करने का तरीका यह है। मीडियाप्लेयर स्टेटिक फैक्टरी विधि डिजाइन पैटर्न का पालन करता है । उदाहरण प्राप्त करने के लिए, हम इसकी create() विधि को कॉल करते create() और इसे ध्वनि के संदर्भ आईडी और संसाधन आईडी को पास करते हैं, जिसे हम खेलना चाहते हैं, इस मामले में R.raw.soho । हम इसे final घोषित करते हैं। जॉन स्कीट ने एक महान स्पष्टीकरण प्रदान किया कि हम here क्यों करते here ।

one.setOnClickListener(new OnClickListener(){

    public void onClick(View v) {
        //code
    }
});

आखिरकार, हमने तय किया कि हमारे पहले आरंभिक बटन क्या करेंगे। बटन क्लिक पर एक ध्वनि चलाएं! ऐसा करने के लिए, हमने अपने बटन पर OnClickListener सेट किया है। अंदर केवल एक विधि है, onClick() जिसमें क्लिक पर बटन को क्या निर्देश देना चाहिए।

public void onClick(View v) {
    mp.start();
}

ध्वनि चलाने के लिए, हम MediaPlayer की start() विधि को कॉल करते हैं। यह विधि ध्वनि के प्लेबैक को शुरू करती है।

वहां, अब आप एंड्रॉइड में बटन क्लिक पर ध्वनि चला सकते हैं!

बोनस भाग:

जैसा कि नीचे दी गई टिप्पणी में उल्लेख किया गया है लैंगस्टेन गस्टेल! , और जैसा एंड्रॉइड डेवलपर संदर्भ में अनुशंसित है , संसाधनों को मुक्त करने के लिए release() विधि को कॉल करना महत्वपूर्ण है जिसका उपयोग अब नहीं किया जाएगा। आम तौर पर, यह खेला जाने के बाद ध्वनि को पूरा करने के बाद किया जाता है। ऐसा करने के लिए, हम अपने mp एक OnCompletionListener जोड़ते हैं :

mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    public void onCompletion(MediaPlayer mp) {
        //code
    }
});

onCompletion विधि के अंदर, हम इसे इस तरह जारी करते हैं:

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

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

मूल पोस्ट

प्रथम। आपको अपने बयान को ब्लॉक के अंदर रखना चाहिए, और इस मामले में ऑनक्रेट विधि।

दूसरा। आपने बटन को वैरिएबल के रूप में प्रारंभ किया है, फिर आपने एक वैरिएबल शून्य का उपयोग किया है और इसके ऑनक्लिक लिस्टनर को अपूर्ण ऑनक्लिक लिस्टनर पर सेट किया है। SetOnClickListener के लिए चर एक का प्रयोग करें।

तीसरा, ऑनक्लिक के अंदर ध्वनि चलाने के लिए तर्क डालें।

संक्षेप में:

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class BasicScreenActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_basic_screen);

        Button one = (Button)this.findViewById(R.id.button1);
        final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
        one.setOnClickListener(new OnClickListener(){

            public void onClick(View v) {
                mp.start();
            }
        });
    }
}

परीक्षण और काम 100%

public class MainActivity extends ActionBarActivity {
    Context context = this;
    MediaPlayer mp;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        mp = MediaPlayer.create(context, R.raw.sound);
        final Button b = (Button) findViewById(R.id.Button);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                try {
                    if (mp.isPlaying()) {
                        mp.stop();
                        mp.release();
                        mp = MediaPlayer.create(context, R.raw.sound);
                    } mp.start();
                } catch(Exception e) { e.printStackTrace(); }
            }
        });
    }
}

यह सब हमें करना था

if (mp.isPlaying()) {
    mp.stop();
    mp.release();
    mp = MediaPlayer.create(context, R.raw.sound);
}

    import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {


            MediaPlayer mp;
            Button one ;
                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);

             mp = MediaPlayer.create(this, R.raw.soho);
             one = (Button)this.findViewById(R.id.button1);

             one.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    mp.start();
                }
            });

                }

        }






playback