Android получает SMS и играет музыкальный сервис - PullRequest
1 голос
/ 09 января 2012

Я новичок в программировании Android, и у меня возникла проблема с получением службы приема SMS для воспроизведения аудиофайла, относящегося к входящему текстовому сообщению. У меня есть рабочий пример такого рода работ, но я не могу остановитьсямузыкальный файл из воспроизведения, и не выберите другой файл для воспроизведения поверх перекрывающего аудио.Поэтому мне кажется, что мне нужно, чтобы служба приема SMS-сообщений вызывала службу медиаплеера, но не знаю как.Также мне нужно было бы остановить музыку с непревзойденным текстовым сообщением.Любая помощь будет отличной.Это то, что у меня есть, что работает с аудио-сервисом.

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.telephony.SmsMessage;


public class SMSreceiver extends BroadcastReceiver {

 MediaPlayer mp1;

@Override
public void onReceive(Context ctx, Intent intent)
{
    Bundle bundle = intent.getExtras();        

    //mp1 = MediaPlayer.create(ctx, R.raw.jingle);

    if(null != bundle)
    {
        Object[] pdus = (Object[]) bundle.get("pdus");

        SmsMessage[] messages = new SmsMessage[pdus.length];
        for (int i = 0; i < messages.length; i++)
        {
            messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);

            if(messages[i].getDisplayMessageBody().equals("a"))
            {
                //Play alarm sound 
                mp1 = MediaPlayer.create(ctx, R.raw.a);
                mp1.setLooping(true); // Set looping
                mp1.start();
            } //---------------------------------------------------
            if(messages[i].getDisplayMessageBody().equals("b"))
            {
                //Play alarm sound 
                mp1 = MediaPlayer.create(ctx, R.raw.b);
                mp1.setLooping(true); // Set looping
                mp1.start();
            } //---------------------------------------------------

            if(messages[i].getDisplayMessageBody().equals("c"))
            {
                //Play alarm sound 
                mp1 = MediaPlayer.create(ctx, R.raw.c);
                mp1.setLooping(true); // Set looping
                mp1.start();
            } //---------------------------------------------------

            if(messages[i].getDisplayMessageBody().equals("d"))
            {
                //Play alarm sound 
                mp1 = MediaPlayer.create(ctx, R.raw.d);
                mp1.setLooping(true); // Set looping
                mp1.start();

            }  //---------------------------------------------------


        }
    }
}

Ответы [ 2 ]

2 голосов
/ 27 мая 2012

Я решил это с помощью потока. Я удалил часть mp1.setLooping(true); и использовал это

mp1 = MediaPlayer.create(context, R.raw.calmpiano);

        mp1.start();


        Thread splashTread = new Thread() {
            @Override
            public void run() {
                try {
                    int waited = 0;
                    while(true && (waited < 5000)) {
                        sleep(100);
                        if(true) {
                            waited += 100;
                        }
                    }
                } catch(InterruptedException e) {
                    // do nothing
                } finally {
                   // finish();
                    //startActivity(new Intent("com.talktome.android.MyOne.MyOneActivity"));
                    stop();
                }
            }
        };
        splashTread.start();
}

        `
0 голосов
/ 07 мая 2012

Зарегистрируйте класс BroadcastReceiver в своем проекте, прослушайте учебное пособие и код для входящих SMS-сообщений. Под ссылкой http://www.androidcompetencycenter.com/2008/12/android-api-sms-handling/ после прослушивания класса приемника Broadcast получите SMS-сообщения для запуска действия медиаплеера

...