范例说明提到了与手机的交互控制,就不能不提到手机震动事件。手机的震动,可以是一种提醒或替换铃声的事件,所以在这个范例中,将学到如何触发手机震动事件,虽然震动是手机默认的模式,但通过程序的辅助,可以做更精密的控制,诸如震动周期、持续时间等。
设置震动(Vibration)事件中,必须要知道命令其震动的时间长短、震动事件的周期等,而在Android里设置的数值,皆是以毫秒(1000毫秒=1秒)来做计算,所以在做设置时,必须要注意一下,如果设置的时间值太小的话,会感觉不出来。
要让手机乖乖的震动,需创建Vibrator对象,通过调用vibrate方法来达到震动的目的,在Vibrator的构造器中有4个参数,前3个的值是设置震动的大小,在这边可以把数值改成一大一小,这样就可以明显感觉出震动的差异,而最后一个值是设置震动的时间。
以下的范例设置每个震动的模式都不一样,当repeat = 0时,震动会一直持续,若repeat = ?1时,震动只会出现一轮,运行完毕后就不会再有动作。
范例程序src/irdc.ex05_06/EX05_06.java
主程序中,判断ToggleButton是否有被启动,如果单击“ON”的话,就会启动震动模式,并会跳出Toast文字;如果再一次单击“OFF”,就会把震动关掉。
package com.example.vibrate; import android.app.Activity; import android.app.Service; import android.os.Bundle; import android.os.Vibrator; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Toast; import android.widget.ToggleButton; public class MainActivity extends Activity { private Vibrator myVibrator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* 设置ToggleButton的对象 */ myVibrator = (Vibrator) getApplication().getSystemService( Service.VIBRATOR_SERVICE); final ToggleButton myTogglebutton1 = (ToggleButton) findViewById(R.id.myTogglebutton1); final ToggleButton myTogglebutton2 = (ToggleButton) findViewById(R.id.myTogglebutton2); final ToggleButton myTogglebutton3 = (ToggleButton) findViewById(R.id.myTogglebutton3); /* 短震动 */ myTogglebutton1.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (myTogglebutton1.isChecked()) { /* 设置震动的周期 */ myVibrator.vibrate(new long[] { 100, 10, 100, 1000 }, -1); /* 用Toast显示震动启动 */ Toast.makeText(MainActivity.this, getString(R.string.str_ok), Toast.LENGTH_SHORT) .show(); } else { /* 取消震动 */ myVibrator.cancel(); /* 用Toast显示震动已被取消 */ Toast.makeText(MainActivity.this, getString(R.string.str_end), Toast.LENGTH_SHORT) .show(); } } }); /* 长震动 */ myTogglebutton2.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (myTogglebutton2.isChecked()) { /* 设置震动的周期 */ myVibrator.vibrate(new long[] { 100, 100, 100, 1000 }, 0); /* 用Toast显示震动启动 */ Toast.makeText(MainActivity.this, getString(R.string.str_ok), Toast.LENGTH_SHORT) .show(); } else { /* 取消震动 */ myVibrator.cancel(); /* 用Toast显示震动取消 */ Toast.makeText(MainActivity.this, getString(R.string.str_end), Toast.LENGTH_SHORT) .show(); } } }); /* 节奏震动 */ myTogglebutton3.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (myTogglebutton3.isChecked()) { /* 设置震动的周期 */ myVibrator.vibrate(new long[] { 1000, 50, 1000, 50, 1000 }, 0); /* 用Toast显示震动启动 */ Toast.makeText(MainActivity.this, getString(R.string.str_ok), Toast.LENGTH_SHORT) .show(); } else { /* 取消震动 */ myVibrator.cancel(); /* 用Toast显示震动取消 */ Toast.makeText(MainActivity.this, getString(R.string.str_end), Toast.LENGTH_SHORT) .show(); } } }); } @Override public 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; } }
AndroidManifest.xml
震动事件必须允许android.permission.VIBRATE权限。
<uses-permission android:name="android.permission.VIBRATE" />
扩展学习震动事件的控制,虽是通过震动时间周期来表现出差异,但在实际设计上,可以设计如接收到短信、单击按钮的瞬间来达到简短震动提示。笔者也常在一些Android开发的游戏中应用震动的事件,如“球入迷宫”的游戏,当球碰到墙壁时,就可以震动手机。
试着把震动的大小做多变化的改变,在long[]里面可以多做一些变化,上面的程序对参数的用法作了示范,而以下的震动效果,就交给读者自己试试看了!
mVibrator01.vibrate ( new long[]{10000,500,10000,500,10000,500,10000},0 );
相关推荐
在Android平台上,调用震动功能是一项常见的任务,尤其在创建交互式应用时,例如滑动解锁、游戏或者通知提醒等场景。以下将详细介绍如何在Android中实现震动效果,以及与之相关的铃声设置。 首先,要实现震动效果,...
在学习这个例子时,开发者不仅可以掌握如何实现定时震动,还能了解到Android组件间的协作方式,包括Intent、BroadcastReceiver和服务的使用。这对于提升Android应用开发技能非常有帮助。 总结来说,这个"Android...
总的来说,这个Android例子源码的核心在于使用`Vibrator`类创建定制的震动效果,并结合密码验证的逻辑来模拟iOS的错误反馈。通过理解这些知识点,开发者可以更好地为Android应用添加类似iOS的交互体验,提升用户满意...
本项目是一个基于Android 2.3(Gingerbread)版本的小实例,旨在帮助开发者学习如何使用Notification API创建和管理通知。 首先,创建Notification需要使用`NotificationCompat.Builder`类,它是Android Support ...
然后,你可以调用`vibrate()`方法来启动震动,参数可以是毫秒数,或者使用`Pattern`对象表示复杂的震动模式。 ```java // 单次震动 vibrator.vibrate(1000); // 1秒震动 // 复杂模式 long[] pattern = {0, 500, ...
在Android平台上,震动功能是通过Vibrator类来实现的,这个类允许应用程序产生设备的物理震动效果。在本文中,我们将深入探讨如何使用Vibrator类,包括默认震动和自定义震动模式。 首先,Vibrator类是Android框架的...
这个“Android例子源码模仿ios密码错误时震动的效果”项目就是一个很好的示例,它展示了如何在Android平台上模拟iOS设备的错误反馈机制。项目使用UTF-8编码,并且默认编译版本为Android 4.4.2(KitKat),这表明它是...
标题"android开发例子程序"和描述"android开发例子程序,例子android开发例子程序,例子"都在强调这个项目的主要目标——为开发者提供实例,帮助他们理解并掌握Android开发。 首先,ApiDemos项目通常包含了Android ...
这个权限允许应用控制设备的震动器,如果缺少此权限,应用将无法触发震动。 接下来,我们创建一个Android Activity来处理震动逻辑。在这个例子中,我们继承了UnityPlayerActivity,这表明我们的应用可能与Unity游戏...
通过调用`hasVibrator()`方法,我们可以得到一个布尔值,表示设备是否具有硬件振动器: ```java boolean hasVibrator = vibrator.hasVibrator(); if (hasVibrator) { // 可以进行震动操作 } else { // 设备不支持...
"android通知例子集合"这个压缩包文件很可能是包含了一系列有关如何在Android应用程序中实现和使用通知功能的示例代码或教程。在这里,我们将深入探讨Android通知机制,以及如何创建和管理通知。 1. **Android通知...
在秋千动画中,可能需要使用类似于物理中的简谐振动的插值器,模拟真实的摆动效果。 5. **帧动画(Frame Animation)** 对于简单的摆动效果,也可以使用`AnimationDrawable`,它通过切换一系列的静态图片来创建...
// 对于旧版本的Android,直接使用震动的毫秒数 vibrator.vibrate(duration + interval); } } ``` 在这个例子中,`duration`是连续震动的时间,`interval`是两次震动之间的间隔。`VibrateEffect.createWaveform...
10. **单元测试和调试**: 对于源码例子,理解如何编写单元测试验证代码功能,以及使用Android Studio的调试工具进行问题排查是必要的。 11. **Android最佳实践**: 开发过程中遵循Android的最佳实践,如使用LiveData...
9. **权限管理**: 根据应用的需求,可能需要请求额外的权限,比如读写日历、访问网络或使用振动器等。在Android 6.0及以上版本,部分权限需要在运行时动态请求。 10. **UI设计和用户体验**: 考虑到用户友好性,界面...
本项目“Android一个小闹钟例子”提供了这样的学习资源,它是一个完整的源码示例,适用于初学者或者需要巩固Android应用基础知识的开发者。 1. **AndroidManifest.xml**: - 这是每个Android应用的核心配置文件,...
首先,我们需要了解Android的振动API。Android系统提供了一个名为`Vibrator`的类,允许应用执行设备的物理振动。要使用这个类,你需要在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:...
在Android开发中,Vibrator(振动器)是一个重要的硬件组件,它允许开发者通过编程方式控制设备的震动。在收到推送消息或其他特定事件时,可以利用振动器为用户提供触觉反馈。本节教程将详细介绍如何在Android应用...
这个压缩包文件“Android一个小闹钟例子.zip”包含了一个简单的Android应用源码,该应用是一个小闹钟的实现。这个项目使用了Java编程语言,并且可能依赖了Apache相关的开源库,比如Apache Commons或HttpComponents等...