【移動應用開發(fā)技術】Android編程如何實現(xiàn)短信收發(fā)及語音播報提示功能_第1頁
【移動應用開發(fā)技術】Android編程如何實現(xiàn)短信收發(fā)及語音播報提示功能_第2頁
【移動應用開發(fā)技術】Android編程如何實現(xiàn)短信收發(fā)及語音播報提示功能_第3頁
【移動應用開發(fā)技術】Android編程如何實現(xiàn)短信收發(fā)及語音播報提示功能_第4頁
【移動應用開發(fā)技術】Android編程如何實現(xiàn)短信收發(fā)及語音播報提示功能_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

【移動應用開發(fā)技術】Android編程如何實現(xiàn)短信收發(fā)及語音播報提示功能

/**

*

發(fā)送短信Demo

*/

public

class

SmsActivity

extends

Activity

implements

OnClickListener

{

public

static

final

String

SMS_RECIPIENT_EXTRA

=

"com.ldm.study.SMS_RECIPIENT";

public

static

final

String

ACTION_SMS_SENT

=

"com.ldm.study.SMS_SENT_ACTION";

private

Button

sms_send_message;

private

EditText

sms_recipient;

private

EditText

sms_content;

private

CheckBox

sms_enable_receiver;

private

TextView

sms_status;

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.send_sms_layout);

initViews();

initListeners();

registerSmsReceiver();

}

/**

*

注冊短信監(jiān)聽廣播

*/

private

void

registerSmsReceiver()

{

registerReceiver(new

BroadcastReceiver()

{

@Override

public

void

onReceive(Context

context,

Intent

intent)

{

String

message

=

null;

boolean

error

=

true;

switch

(getResultCode())

{

case

Activity.RESULT_OK:

message

=

"發(fā)送成功!";

error

=

false;

break;

case

SmsManager.RESULT_ERROR_GENERIC_FAILURE:

message

=

"發(fā)送失敗";

break;

case

SmsManager.RESULT_ERROR_NO_SERVICE:

message

=

"發(fā)送失敗";

break;

case

SmsManager.RESULT_ERROR_NULL_PDU:

message

=

"發(fā)送失敗";

break;

case

SmsManager.RESULT_ERROR_RADIO_OFF:

message

=

"發(fā)送失敗";

break;

}

sms_recipient.setEnabled(true);

sms_content.setEnabled(true);

sms_content.setText("");

sms_status.setText(message);

sms_status.setTextColor(error

?

Color.RED

:

Color.GREEN);

}

},

new

IntentFilter(ACTION_SMS_SENT));

}

/**

*

監(jiān)聽事件

*/

private

void

initListeners()

{

sms_send_message.setOnClickListener(this);

//

應用Package管理器

final

PackageManager

pm

=

this.getPackageManager();

//

獲取到應用中指定的組件

final

ComponentName

componentName

=

new

ComponentName("com.ldm.study",

"com.ldm.study.receiver.SmsMessageReceiver");

//

根據(jù)組件是否可用的狀態(tài)來判斷sms_enable_receiver的選中狀態(tài)

sms_enable_receiver

.setChecked(pm.getComponentEnabledSetting(componentName)

==

PackageManager.COMPONENT_ENABLED_STATE_ENABLED);

//

監(jiān)聽sms_enable_receiver設置廣播組件是否可用

sms_enable_receiver

.setOnCheckedChangeListener(new

OnCheckedChangeListener()

{

public

void

onCheckedChanged(CompoundButton

buttonView,

boolean

isChecked)

{

//

組件狀態(tài)設置

pm.setComponentEnabledSetting(

componentName,

isChecked

?

PackageManager.COMPONENT_ENABLED_STATE_ENABLED

:

PackageManager.COMPONENT_ENABLED_STATE_DISABLED,

PackageManager.DONT_KILL_APP);

}

});

}

private

void

initViews()

{

sms_recipient

=

(EditText)

(findViewById(R.id.sms_recipient));

sms_content

=

((EditText)

findViewById(R.id.sms_content));

//

是否打開短信廣播接收開關

sms_enable_receiver

=

(CheckBox)

findViewById(R.id.sms_enable_receiver);

sms_send_message

=

(Button)

findViewById(R.id.sms_send_message);

sms_status

=

(TextView)

findViewById(R.id.sms_status);

if

(getIntent().hasExtra(SMS_RECIPIENT_EXTRA))

{

sms_recipient.setText(getIntent().getExtras().getString(

SMS_RECIPIENT_EXTRA));

sms_content.requestFocus();

}

}

@Override

public

void

onClick(View

v)

{

if

(v.getId()

==

R.id.sms_send_message)

{

sendSms();

}

}

/**

*

發(fā)送短信

*

*/

private

void

sendSms()

{

if

(TextUtils.isEmpty(sms_recipient.getText()))

{

Toast.makeText(SmsActivity.this,

"請輸入短信接收者",

Toast.LENGTH_SHORT)

.show();

return;

}

if

(TextUtils.isEmpty(sms_content.getText()))

{

Toast.makeText(SmsActivity.this,

"請輸入短信內容",

Toast.LENGTH_SHORT)

.show();

return;

}

sms_recipient.setEnabled(false);

sms_content.setEnabled(false);

SmsManager

sms

=

SmsManager.getDefault();

List<String>

messages

=

sms.divideMessage(sms_recipient.getText()

.toString());

String

recipient

=

sms_content.getText().toString();

for

(String

message

:

messages)

{

//

發(fā)送短信

sms.sendTextMessage(recipient,

null,

message,

PendingIntent

.getBroadcast(SmsActivity.this,

0,

new

Intent(

ACTION_SMS_SENT),

0),

null);

}

}

}/**

*

接收短信語音播報

*

*/

public

class

SmsReceivedActivity

extends

Activity

implements

OnInitListener

{

private

static

final

int

DIALOG_SHOW_MESSAGE

=

1;

public

static

final

String

SMS_FROM_ADDRESS_EXTRA

=

"com.ldm.study.SMS_FROM_ADDRESS";

public

static

final

String

SMS_FROM_DISPLAY_NAME_EXTRA

=

"com.ldm.study.SMS_FROM_DISPLAY_NAME";

public

static

final

String

SMS_MESSAGE_EXTRA

=

"com.ldm.study.SMS_MESSAGE";

private

TextToSpeech

mTts;

private

String

mFromDisplayName;

private

String

mFromAddress;

private

String

mMessage;

private

String

mFullBodyString;

@SuppressWarnings("deprecation")

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

//

短信來電號碼

mFromAddress

=

getIntent().getExtras()

.getString(SMS_FROM_ADDRESS_EXTRA);

//

來電人稱呼

mFromDisplayName

=

getIntent().getExtras().getString(

SMS_FROM_DISPLAY_NAME_EXTRA);

mMessage

=

getIntent().getExtras().getString(SMS_MESSAGE_EXTRA);

//

短信內容

mFullBodyString

=

String.format(getString(R.string.sms_format),

mFromDisplayName,

mMessage);

showDialog(DIALOG_SHOW_MESSAGE);

//初始化TTS

mTts

=

new

TextToSpeech(this,

this);

}

/**

*

初始化TTS服務

*/

@SuppressWarnings("deprecation")

public

void

onInit(int

status)

{

if

(status

==

TextToSpeech.SUCCESS)

{//

成功狀態(tài)

//

設置語言,TTS引擎支持

English、

French

、

German

、

Italian

Spanish

這5大語言

int

result

=

mTts.setLanguage(Locale.ENGLISH);

if

(result

==

TextToSpeech.LANG_MISSING_DATA

||

result

==

TextToSpeech.LANG_NOT_SUPPORTED)

{

Toast.makeText(this,

"TTS不可用",

Toast.LENGTH_LONG).show();

}

else

{

mTts.speak(mFullBodyString,

TextToSpeech.QUEUE_ADD,

null);

//

mTts.speak(mFullBodyString,

TextToSpeech.QUEUE_ADD,

null,

//

"");

}

}

else

{

Toast.makeText(this,

"TTS初始化失敗",

Toast.LENGTH_LONG).show();

}

}

@Override

protected

Dialog

onCreateDialog(int

id)

{

switch

(id)

{

case

DIALOG_SHOW_MESSAGE:

return

new

AlertDialog.Builder(this)

.setIcon(android.R.drawable.ic_dialog_email)

.setTitle("Message

Received")

.setMessage(mFullBodyString)

.setPositiveButton("回復",

new

DialogInterface.OnClickListener()

{

public

void

onClick(DialogInterface

dialog,

int

whichButton)

{

//

回復短信則跳轉到發(fā)送短信界面,把接收人信息帶過去

Intent

i

=

new

Intent();

i.setClass(SmsReceivedActivity.this,

SmsActivity.class);

i.putExtra(SmsActivity.SMS_RECIPIENT_EXTRA,

mFromAddress);

startActivity(i);

dialog.dismiss();

finish();

}

})

.setNegativeButton("取消",

new

DialogInterface.OnClickListener()

{

public

void

onClick(DialogInterface

dialog,

int

whichButton)

{

dialog.dismiss();

finish();

}

}).create();

}

return

null;

}

}短信廣播/**

*

短信來信監(jiān)聽廣播

*

*/

public

class

MyMsmReceiver

extends

BroadcastReceiver

{

@Override

public

void

onReceive(Context

context,

Intent

intent)

{

Bundle

extras

=

intent.getExtras();

if

(extras

==

null)

return;

//

收到的短信內容

Object[]

pdus

=

(Object[])

extras.get("pdus");

for

(int

i

=

0;

i

<

pdus.length;

i++)

{

SmsMessage

message

=

SmsMessage.createFromPdu((byte[])

pdus[i]);

String

fromAddress

=

message.getOriginatingAddress();

String

fromDisplayName

=

fromAddress;

Uri

uri;

String[]

projection;

uri

=

Uri.withAppendedPath(

ContactsContract.PhoneLookup.CONTENT_FILTER_U

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論