2012-01-02 1 views
-1

Я делаю приложение для Android, которое будет воспроизводить mp3-файл, когда будет получен SMS-сообщение с «PhoneAlarm». Это последний код, который работает для меня.Воспроизведение mp3-файлов в приложении android

Обратите внимание, что: «Я не буду использовать все кодировки, которая находится в здесь» Взгляните на мой код:

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.Environment; 
import android.telephony.gsm.SmsMessage; 
import android.widget.DigitalClock; 
import android.widget.Toast; 
import android.media.MediaPlayer; 

public class IncomingSmsCaptureApp extends BroadcastReceiver { 
MediaPlayer mp1; 
@Override 
public void onReceive(Context context, Intent intent) { 
File sdcard = Environment.getExternalStorageDirectory(); 

//Get the text file 
File file = new File(sdcard,"Notes\file.txt"); 

//Read text from file 
String text = new String(); 

try { 
    BufferedReader br = new BufferedReader(new FileReader(file)); 
    String line; 

    while ((line = br.readLine()) != null) { 
    } 
} 
catch (IOException e) { 
    //You'll need to add proper error handling here 
} 
//---get the SMS message passed in--- 
Bundle bundle = intent.getExtras();  
SmsMessage[] msgs = null; 
String str = "";  
String Message = ""; 
if (bundle != null) 
{ 
//---retrieve the SMS message received--- 
Object[] pdus = (Object[]) bundle.get("pdus"); 
msgs = new SmsMessage[pdus.length];   
for (int i=0; i<msgs.length; i++){ 
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);    
str += "SMS from " + msgs[i].getOriginatingAddress();      
str += " :"; 
str += msgs[i].getMessageBody().toString(); 
str += "\n";  
Message = msgs[i].getMessageBody().toString(); 
} 
//---display the new SMS message--- 
Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); 
if (Message == "PhoneAlarm") { 
//Play alarm sound 
mp1 = MediaPlayer.create(context, R.raw.alarm); 
mp1.start(); 
} 
}  
} 
} 

ответ

1

Метод setDataSource() ожидает струнный путь к мультимедийному файлу, а не просто resource id, вы можете создать его, используя create(context, resid), и он будет готов воспроизвести ваш звук:

//When creating your player: 
mp1 = MediaPlayer.create(context, R.raw.alarm); 

//When playing sound, note that prepare() should not be called: 
mp1.start(); 

//When you don't need the player anymore: 
mp1.release(); 
+0

Hi! Большое спасибо, но он все еще не воспроизводит мой звук, как только я получаю сообщение. Пожалуйста, взгляните на код сейчас. – MySoftware

+0

Это потому, что вы сравниваете сообщение и «PhoneAlarm» с помощью оператора ==, вместо этого вызывайте Message.equals («PhoneAlarm») (который сравнивает содержимое строки, == просто сравнивает объекты, было много вопросов об этом, если вы хотите прочитать более подробную информацию об этом). Кроме того, при создании нового MediaPlayer каждый раз, когда вы воспроизводите звук, вы также должны называть метод release(). – Jave

+0

Ты СДЕЛАЛ меня день! Большое спасибо! Он работает сейчас! :-) Но как насчет записи на SD-карту, чтобы он мог ее прочитать ??? – MySoftware