Android编程实现短信收发及语音播报提示功能示例
本文实例讲述了Android编程实现短信收发及语音播报提示功能。分享给大家供大家参考,具体如下:
发送短信功能界面
/** *发送短信Demo * *@description: *@authorldm *@date2016-4-22上午9:07:53 */ publicclassSmsActivityextendsActivityimplementsOnClickListener{ publicstaticfinalStringSMS_RECIPIENT_EXTRA="com.ldm.study.SMS_RECIPIENT"; publicstaticfinalStringACTION_SMS_SENT="com.ldm.study.SMS_SENT_ACTION"; privateButtonsms_send_message; privateEditTextsms_recipient; privateEditTextsms_content; privateCheckBoxsms_enable_receiver; privateTextViewsms_status; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.send_sms_layout); initViews(); initListeners(); registerSmsReceiver(); } /** *注册短信监听广播 * *@description: *@authorldm *@date2016-4-22上午9:23:23 */ privatevoidregisterSmsReceiver(){ registerReceiver(newBroadcastReceiver(){ @Override publicvoidonReceive(Contextcontext,Intentintent){ Stringmessage=null; booleanerror=true; switch(getResultCode()){ caseActivity.RESULT_OK: message="发送成功!"; error=false; break; caseSmsManager.RESULT_ERROR_GENERIC_FAILURE: message="发送失败"; break; caseSmsManager.RESULT_ERROR_NO_SERVICE: message="发送失败"; break; caseSmsManager.RESULT_ERROR_NULL_PDU: message="发送失败"; break; caseSmsManager.RESULT_ERROR_RADIO_OFF: message="发送失败"; break; } sms_recipient.setEnabled(true); sms_content.setEnabled(true); sms_content.setText(""); sms_status.setText(message); sms_status.setTextColor(error?Color.RED:Color.GREEN); } },newIntentFilter(ACTION_SMS_SENT)); } /** *监听事件 * *@description: *@authorldm *@date2016-4-22上午9:24:20 */ privatevoidinitListeners(){ sms_send_message.setOnClickListener(this); //应用Package管理器 finalPackageManagerpm=this.getPackageManager(); //获取到应用中指定的组件 finalComponentNamecomponentName=newComponentName("com.ldm.study", "com.ldm.study.receiver.SmsMessageReceiver"); //根据组件是否可用的状态来判断sms_enable_receiver的选中状态 sms_enable_receiver .setChecked(pm.getComponentEnabledSetting(componentName)==PackageManager.COMPONENT_ENABLED_STATE_ENABLED); //监听sms_enable_receiver设置广播组件是否可用 sms_enable_receiver .setOnCheckedChangeListener(newOnCheckedChangeListener(){ publicvoidonCheckedChanged(CompoundButtonbuttonView, booleanisChecked){ //组件状态设置 pm.setComponentEnabledSetting( componentName, isChecked?PackageManager.COMPONENT_ENABLED_STATE_ENABLED :PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } }); } privatevoidinitViews(){ 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 publicvoidonClick(Viewv){ if(v.getId()==R.id.sms_send_message){ sendSms(); } } /** *发送短信 * *@description: *@authorldm *@date2016-4-22上午9:30:38 */ privatevoidsendSms(){ 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); SmsManagersms=SmsManager.getDefault(); Listmessages=sms.divideMessage(sms_recipient.getText() .toString()); Stringrecipient=sms_content.getText().toString(); for(Stringmessage:messages){ //发送短信 sms.sendTextMessage(recipient,null,message,PendingIntent .getBroadcast(SmsActivity.this,0,newIntent( ACTION_SMS_SENT),0),null); } } }
收到短信后处理界面:
/** *接收短信语音播报 * *@description: *@authorldm *@date2016-4-22上午9:34:21 */ publicclassSmsReceivedActivityextendsActivityimplementsOnInitListener{ privatestaticfinalintDIALOG_SHOW_MESSAGE=1; publicstaticfinalStringSMS_FROM_ADDRESS_EXTRA="com.ldm.study.SMS_FROM_ADDRESS"; publicstaticfinalStringSMS_FROM_DISPLAY_NAME_EXTRA="com.ldm.study.SMS_FROM_DISPLAY_NAME"; publicstaticfinalStringSMS_MESSAGE_EXTRA="com.ldm.study.SMS_MESSAGE"; privateTextToSpeechmTts; privateStringmFromDisplayName; privateStringmFromAddress; privateStringmMessage; privateStringmFullBodyString; @SuppressWarnings("deprecation") @Override protectedvoidonCreate(BundlesavedInstanceState){ 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=newTextToSpeech(this,this); } /** *初始化TTS服务 */ @SuppressWarnings("deprecation") publicvoidonInit(intstatus){ if(status==TextToSpeech.SUCCESS){//成功状态 //设置语言,TTS引擎支持English、French、German、Italian和Spanish这5大语言 intresult=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 protectedDialogonCreateDialog(intid){ switch(id){ caseDIALOG_SHOW_MESSAGE: returnnewAlertDialog.Builder(this) .setIcon(android.R.drawable.ic_dialog_email) .setTitle("MessageReceived") .setMessage(mFullBodyString) .setPositiveButton("回复", newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog, intwhichButton){ //回复短信则跳转到发送短信界面,把接收人信息带过去 Intenti=newIntent(); i.setClass(SmsReceivedActivity.this, SmsActivity.class); i.putExtra(SmsActivity.SMS_RECIPIENT_EXTRA, mFromAddress); startActivity(i); dialog.dismiss(); finish(); } }) .setNegativeButton("取消", newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog, intwhichButton){ dialog.dismiss(); finish(); } }).create(); } returnnull; } }
短信广播
/** *短信来信监听广播 * *@description: *@authorldm *@date2016-4-22上午10:07:49 */ publicclassMyMsmReceiverextendsBroadcastReceiver{ @Override publicvoidonReceive(Contextcontext,Intentintent){ Bundleextras=intent.getExtras(); if(extras==null) return; //收到的短信内容 Object[]pdus=(Object[])extras.get("pdus"); for(inti=0;i附:DEMO示例代码点击此处本站下载。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android短信与电话操作技巧汇总》、《Android文件操作技巧汇总》、《Android操作json格式数据技巧总结》、《Android编程之activity操作技巧总结》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。