概述
程序功能:在主界面中有两种模式选择,一个是会议模式,一个是正常模式,当选择会议模式,手机设定为静音,当选择为正常模式,手机设定为响铃。当单击添加按钮时,系统会自动从编辑框中提取输入电话号码,若输入的电话号码不全为数字时,会提示出错。
程序效果如下:
首先给出布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RadioGroup
android:id="@+id/rg"
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb1"
android:text="会议模式"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb2"
android:text="正常模式"
/>
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请输入号码:"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et"
/>
</LinearLayout>
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加"
/>
<TextView
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv"
/>
</LinearLayout>
布局文件中的最后一个TextView控件是用来显示添加来电显示电话号码的。
接下来给出主功能代码:
package com.example.sample6_13;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private RadioGroup rg;
private EditText et;
private Button btn;
private TextView tv;
private RadioButton rb1;
private RadioButton rb2;
private Vibrator vibrator;
private List<String> num;
private StringBuilder sb;
private int count;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sb = new StringBuilder();
num = new ArrayList<String>();
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(myPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
InitViews();
}
PhoneStateListener myPhoneStateListener = new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE://待机状态
Toast.makeText(MainActivity.this, "手机处于待机状态", Toast.LENGTH_SHORT).show();
if(rb1.isChecked() == true){//会议模式
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if(am != null){
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);//设置静音模式
am.getStreamVolume(AudioManager.STREAM_RING);
}
}else
{
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if(am != null){
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);//设置静音模式
am.getStreamVolume(AudioManager.STREAM_RING);
}
}
break;
case TelephonyManager.CALL_STATE_RINGING:
if(num.size() == 0){
return;
}
for(int i=0;i<num.size();i++){
if(incomingNumber.equals(num.get(i))){
vibrator.vibrate(new long[]{100,10,100,1000},0);
Toast.makeText(MainActivity.this, "手机正在震动", Toast.LENGTH_SHORT).show();
}
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
vibrator.cancel();
Toast.makeText(MainActivity.this, "手机震动已取消", Toast.LENGTH_SHORT).show();
break;
}
};
};
private void InitViews() {
rg = (RadioGroup) findViewById(R.id.rg);
rb1 = (RadioButton) findViewById(R.id.rb1);
rb2 = (RadioButton) findViewById(R.id.rb2);
et = (EditText) findViewById(R.id.et);
btn = (Button) findViewById(R.id.btn);
tv = (TextView) findViewById(R.id.tv);
vibrator = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String msg = et.getText().toString().trim();
if(msg.matches("^[0-9]*$") && !msg.equals("")){
num.add(msg);
et.setText("");
sb.append(count++);
sb.append(".");
sb.append(msg);
sb.append("n");
tv.setText(sb.toString());
}else
{
Toast.makeText(MainActivity.this, "电话号码中只允许有数字并且不能为空", Toast.LENGTH_SHORT).show();
}
}
});
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(checkedId == rb1.getId()){//会议模式
AudioManager am = (AudioManager) MainActivity.this.getSystemService(Context.AUDIO_SERVICE);
if(am != null){
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);//设置为静音模式
am.getStreamVolume(AudioManager.STREAM_RING);
Toast.makeText(MainActivity.this, "手机已设定为静音模式", Toast.LENGTH_SHORT).show();
}
}else if(checkedId == rb2.getId())
{
AudioManager am = (AudioManager) MainActivity.this.getSystemService(Context.AUDIO_SERVICE);
if(am != null){
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);//设置为正常模式
am.getStreamVolume(AudioManager.STREAM_RING);
Toast.makeText(MainActivity.this, "手机已设定为正常模式", Toast.LENGTH_SHORT).show();
}
}
}
});
}
}
手机设定为静音模式:
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);//设置静音模式
am.getStreamVolume(AudioManager.STREAM_RING);
手机设定为正常模式:
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);//设置静音模式
am.getStreamVolume(AudioManager.STREAM_RING);
具体代码参考上面,最后就是添加权限了:
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
最后
以上就是发嗲河马为你收集整理的设置手机静音和固定电话来电时手机震动的全部内容,希望文章能够帮你解决设置手机静音和固定电话来电时手机震动所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复