-1
我正在製作一個android應用程序,一旦收到包含「PhoneAlarm」的短信,它將播放一個mp3文件。 這是最適合我的代碼。在Android應用程序中播放MP3文件
需要注意的是:「我不會使用所有在這裏的編碼」 看看我的代碼:
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();
}
}
}
}
嗨!非常感謝,但一旦我收到消息,它仍然沒有播放我的聲音。請現在看看代碼。 – MySoftware 2012-01-02 14:18:05
這是因爲您使用==運算符比較Message和「PhoneAlarm」,而是調用Message.equals(「PhoneAlarm」)(它比較字符串的內容,==只比較對象,出現了很多問題關於這個如果你想閱讀更多關於它的細節)。另外,由於每次播放聲音時都要創建一個新的MediaPlayer,因此您應該記得在其上調用release()方法。 – Jave 2012-01-02 14:24:42
你讓我一天!非常感謝!它現在正常工作!:-)但如何寫入SD卡,以便它可以讀取? – MySoftware 2012-01-02 14:30:05