Android控制手机振动相关
16lz
2021-01-26
如何通过代码控制手机振动??
下面来看一个例子
1》在Manifest.xml文件中加入使用权限
完整的文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
2》程序运行效果如下图所示:
布局文件activity_main.xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
3》程序完整代码如下(包含详细注示)
package com.linkcube.vibrateactivity;import android.app.Service;import android.os.Bundle;import android.os.Vibrator;import android.support.v7.app.ActionBarActivity;import android.view.Menu;import android.view.MenuItem;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.TextView;import android.widget.ToggleButton;public class MainActivity extends ActionBarActivity {// 声明控件private ToggleButton tb1 = null;private ToggleButton tb2 = null;private TextView tv1 = null;private TextView tv2 = null;private Vibrator vibrator = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}// 初始化private void init() {// 得到相应控件的引用tb1 = (ToggleButton) findViewById(R.id.tb1);tv1 = (TextView) findViewById(R.id.tv1);tb2 = (ToggleButton) findViewById(R.id.tb2);tv2 = (TextView) findViewById(R.id.tv2);// 注册事件tb1.setOnCheckedChangeListener(listener);tb2.setOnCheckedChangeListener(listener);vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);}OnCheckedChangeListener listener = new OnCheckedChangeListener() {public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {ToggleButton toggleButton = (ToggleButton) buttonView;switch (toggleButton.getId()) {case R.id.tb1:if (isChecked) {// 根据指定的模式进行震动// 第一个参数:该数组中第一个元素是等待多长的时间才启动震动,// 之后将会是开启和关闭震动的持续时间,单位为毫秒// 第二个参数:重复震动时在pattern中的索引,如果设置为-1则表示不重复震动// 第一个参数:等待1秒,震动2秒,等待1秒,震动3秒 ,等待1秒,震动5秒// 第二个参数:-1表示不重复, 如果不是-1, 比如改成1, 表示从前面这个long数组的下标为1的元素开始重复.vibrator.vibrate(new long[] { 1000, 2000, 1000, 3000, 1000,5000 }, 0);tv1.setText("振动已启动");} else {// 关闭震动vibrator.cancel();tv1.setText("震动已关闭");}break;case R.id.tb2:if (isChecked) {// 启动震动,并持续指定的时间vibrator.vibrate(3500);tv2.setText("振动已启动");} else {// 关闭启动vibrator.cancel();tv2.setText("震动已关闭");}break;}}};@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}
更多相关文章
- Android(安卓)ADT中增大AVD内存后无法启动:emulator failed to al
- Android自动打开和关闭软键盘
- Android(安卓)debug时一直处于waiting for debugger解决办法
- Android中阻止AlertDialog关闭实例代码
- Android(安卓)侧滑关闭Activity的实例
- Android中利用反射机制来控制AlertDialog窗口不被关闭
- android 自定义dialog 实例
- 监听android屏幕亮、暗、锁和关闭系统动作
- 【Android】Animation之震动效果动画在登录Activity上的应用