編輯:關於Android編程
本文實例講述了Android基於AudioManager、PhoneStateListener實現設置黑名單功能。分享給大家供大家參考,具體如下:
手機中一般有設置黑名單的功能。此例通過設置電話黑名單,當黑名單中的電話打來時,手機鈴聲為變成靜音。
程序代碼如下:
import android.app.Activity; import android.content.Context; import android.media.AudioManager; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class A11Activity extends Activity { private EditText et;//添加輸入框,輸入並設置黑名單 private TextView tv01,tv02; //tv01用來顯示EditText中輸入的黑名單;tv02用來顯示當前手機電話所處的狀態 /** Called when the activity is first created. */ @SuppressWarnings("static-access") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv01=(TextView)findViewById(R.id.tv01); tv02=(TextView)findViewById(R.id.tv02); et=(EditText)findViewById(R.id.et); /**創建PhoneCallListener的對象;其中PhoneCallListener是 * 擴展了PhoneStateListener的類*/ PhoneCallListener pcl=new PhoneCallListener(); TelephonyManager tm=(TelephonyManager)getSystemService(TELEPHONY_SERVICE); //設置監聽電話的功能 tm.listen(pcl, pcl.LISTEN_CALL_STATE); } public class PhoneCallListener extends PhoneStateListener{ public void onCallStateChanged(int state,String incomingNumber){ switch(state){ //手機狀態為待機時,手機鈴聲為正常模式 case TelephonyManager.CALL_STATE_IDLE: tv02.setText("CALL_STATE_IDLE"); AudioManager am=(AudioManager)getSystemService(Context.AUDIO_SERVICE); am.setMode(AudioManager.MODE_NORMAL); am.getStreamVolume(AudioManager.STREAM_RING); break; //手機狀態為通話中 case TelephonyManager.CALL_STATE_OFFHOOK: tv02.setText("CALL_STATE_OFFHOOK"); break; //手機模式為響鈴時 case TelephonyManager.CALL_STATE_RINGING: tv02.setText("CALL_STATE_RINGING"); //當來電號碼與黑名單中的電話號碼相同時,設置電話鈴聲為靜音 if(incomingNumber.equals(tv01.getText().toString())){ AudioManager am01=(AudioManager)getSystemService(AUDIO_SERVICE); am01.setRingerMode(AudioManager.RINGER_MODE_SILENT); am01.getStreamVolume(AudioManager.STREAM_RING); Toast.makeText(A11Activity.this, "黑名單中的電話靜音!!", Toast.LENGTH_LONG).show(); } } super.onCallStateChanged(state, incomingNumber); et.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub tv01.setText(et.getText()); et.setText(""); return true; } }); } } }
更多關於Android相關內容感興趣的讀者可查看本站專題:《Android控件用法總結》及《Android開發入門與進階教程》
希望本文所述對大家Android程序設計有所幫助。
在Android中listview是最常用的控件之一,但是有時候我們會覺得千篇一律的listview看起來過於單調,於是就產生了listView動畫,listview加載
我們編寫的是Andorid的HTTP協議多線程斷點下載應用程序。直接使用單線程下載HTTP文件對我們來說是一件非常簡單的事。那麼,多線程斷點需要什麼功能?1.多線程下載,
前言 Content Provider為存儲數據和獲取數據提供了統一的
參考原文Android PopupWindow用法解析進行學習,通過實例及PopupWindow源碼分析了PopupWindow的使用。文章最後的“補充Case: 彈窗不