我写了一个Android应用程序。现在,我想让设备在某个动作发生时振动。我怎么能这么做?
在您开始实现任何振动代码之前,您必须给予您的应用程序振动的权限:
<uses-permission android:name="android.permission.VIBRATE"/>
确保在您的AndroidManifest.xml文件中包含这一行。
大多数IDE都会为您执行此操作,但如果您的IDE不执行此操作,下面是import语句:
import android.os.Vibrator;
在你希望振动发生的activity上确保这一点。
在大多数情况下,您将希望振动设备一个短的,预定的时间量。您可以通过使用震动(长毫秒)
方法来实现这一点。下面是一个简单的示例:
// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 400 milliseconds
v.vibrate(400);
就是这样,简单!
可能是这样的情况,你希望设备无限期地继续振动。为此,我们使用vibrate(Long[]pattern,int repeat)
方法:
// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Start without a delay
// Vibrate for 100 milliseconds
// Sleep for 1000 milliseconds
long[] pattern = {0, 100, 1000};
// The '0' here means to repeat indefinitely
// '0' is actually the index at which the pattern keeps repeating from (the start)
// To repeat the pattern from any other point, you could increase the index, e.g. '1'
v.vibrate(pattern, 0);
当您准备好停止振动时,只需调用cancel()
方法:
v.cancel();
如果你想要一个更定制的振动,你可以尝试创建你自己的振动模式:
// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Start without a delay
// Each element then alternates between vibrate, sleep, vibrate, sleep...
long[] pattern = {0, 100, 1000, 300, 200, 100, 500, 200, 100};
// The '-1' here means to vibrate once, as '-1' is out of bounds in the pattern array
v.vibrate(pattern, -1);
有多个SDK提供更全面的触觉反馈。我使用的特效是Immersion的Android触觉开发平台。
如果你的设备不会振动,首先要确保它能振动:
// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Output yes if can vibrate, no otherwise
if (v.hasVibrator()) {
Log.v("Can Vibrate", "YES");
} else {
Log.v("Can Vibrate", "NO");
}
其次,请确保您已经给了应用程序振动的权限!回到第一点。
尝试:
import android.os.Vibrator;
...
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
v.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
//deprecated in API 26
v.vibrate(500);
}
注:
不要忘记在AndroidManifest.xml文件中包含权限:
<uses-permission android:name="android.permission.VIBRATE"/>
现在,我想让设备在屏幕上显示结果时振动 MainActivity.java的某些部分 我怎么能这么做? 谢了!
可以通过蓝牙传输音频吗?在我的研究中,我发现只有使用A2DP(高级音频分布配置文件)才有可能。每个Android设备都支持A2DP吗?如果没有,是否可以使用蓝牙在两个Android设备之间传输音频?请帮我理解这一点。 我浏览了以下链接: 在Android中通过蓝牙接收音频, 谷歌确认蓝牙音频流修复下一个版本的Android 4.2 如何通过蓝牙从另一台设备流式传输音频?
例如,我有两个心率监视器与我的平板电脑配对。我正在使用这样的代码来获取HRM设备列表: 然后,我在GUI中显示一个列表框,其中包含从设备[I]获取的设备名称。名称例如,我选择索引为0的设备。然后我可以访问it人力资源服务和人力资源管理特征: 除了心率,我还需要电池状态。如何访问同一(已选择)设备的电池服务?
问题内容: 我写了一个Android应用程序。现在,我想使设备在发生某种动作时振动。我怎样才能做到这一点? 问题答案: 尝试: 注意: 不要忘记在文件中包含权限:
目前我正在使用spring、struts2、mybatis和mysql。 一个用户可以管理多个办公室,例如,管理纽约办公室和伦敦办公室,并且不同办公室的权限不同,因此该用户必须创建多个帐户,如果他/她想每天处理不同办公室的预订,则必须在多个帐户之间登录/注销。 有用户、权限、用户角色和角色权限表。 现在我尝试让一个用户只需要一个帐户,然后他/她可以切换到具有不同权限(菜单权限和按钮权限)的不同办公
在android中是否有区分不同类型的音频设备?例如,我从不同的制造商获得了音频设备类型A和音频设备类型B,这两种设备都使用音频插孔。每当用户插入音频设备类型A或类型B时,我想知道设备ID或名称、类型。我可以使用BroadcastRecencer检测音频设备的插入/输出。但无法获取设备ID或名称或类型。场景是:当音频设备类型A连接时,开启服务A,当音频设备类型B连接时,开启服务B。