編輯:關於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動畫實現方法
在Android中listview是最常用的控件之一,但是有時候我們會覺得千篇一律的listview看起來過於單調,於是就產生了listView動畫,listview加載
Android實現網絡多線程斷點續傳下載實例
我們編寫的是Andorid的HTTP協議多線程斷點下載應用程序。直接使用單線程下載HTTP文件對我們來說是一件非常簡單的事。那麼,多線程斷點需要什麼功能?1.多線程下載,
Android開發之ContentProvider的使用詳解
前言 Content Provider為存儲數據和獲取數據提供了統一的
Android中PopupWindow使用方法詳解
參考原文Android PopupWindow用法解析進行學習,通過實例及PopupWindow源碼分析了PopupWindow的使用。文章最後的“補充Case: 彈窗不