android wear通知震动,Android Wear 监视面因屏幕关闭而振动

我有一个安卓 Wear 手表,我正尝试在小时内震动手表。 除了屏幕关闭的情况外,它工作正常。 根据日志语句,每分钟调用处理程序方法,并在小时调用chime方法。 如果我用 Moto 360在蓝牙上调试,即使屏幕关闭也能正常工作。 如果我安装一个版本的apk,它只在屏幕上的时候振动。 如果屏幕在一个小时的顶部关闭,直到屏幕回来,它才会振动。 我曾尝试在没有luck的情况下获得wake锁。 我认为,如果我获得了一个尾锁锁,然后在onDestroy中释放它,但我宁愿不要保留电池。 另一个有趣的小消息是,当可以穿戴数据api中的某些数据更改和使用屏幕时,我有另一。 也许WearableListenerService把手表唤醒足够长的时间让振动发生。 我的逻辑有什么问题或者是某些 Android Wear 设备的限制?

时间更改处理程序:final Handler mUpdateTimeHandler = new Handler() {

@Override

public void handleMessage(Message message) {

switch (message.what) {

case MSG_UPDATE_TIME:

MyLog.d("Time Tick Message Handler");

doTimeTickStuff();

long timeMs = System.currentTimeMillis();

long delayMs = mInteractiveUpdateRateMs - (timeMs % mInteractiveUpdateRateMs);

mUpdateTimeHandler.sendEmptyMessageDelayed(MSG_UPDATE_TIME, delayMs);

break;

}

}

};

doTimeTickStuff()private void doTimeTickStuff()

{

MyLog.d("timetickstuff");

try {

mCalendar = Calendar.getInstance();

int currMin = mCalendar.get(Calendar.MINUTE);

if (currMin == 0) {

hourlyChime();

}

}

catch(Exception ex)

{

MyLog.e(ex,"Error occurred in time tick handler");

}

if (mIsVisible) {

invalidate();

}

}

hourlyChime()private void hourlyChime(){

Vibrator v = (Vibrator) getBaseContext().getSystemService(VIBRATOR_SERVICE);

if (v.hasVibrator()) {

MyLog.d("vibrating");

v.vibrate(1000);

}

else {

MyLog.d("No vibrator");

}

}

这个解决方案是用在监视面板中创建一个和 register,然后在onDestroy中取消注册接收器。

onCreate()@Override

public void onCreate(SurfaceHolder holder) {

super.onCreate(holder);

mChimeAlarmManager =

(AlarmManager) getSystemService(Context.ALARM_SERVICE);

Intent ambientStateIntent = new Intent("packagename.HOURLY_CHIME");

mChimePendingIntent = PendingIntent.getBroadcast(getApplicationContext(),

1234, ambientStateIntent, PendingIntent.FLAG_UPDATE_CURRENT);

WeatherTime.this.registerReceiver(chimeReceiver,

new IntentFilter("packagename.HOURLY_CHIME"));

long alarmMs = getMsTillNextHour() + System.currentTimeMillis();

mChimeAlarmManager.setExact(

AlarmManager.RTC_WAKEUP,

alarmMs,

mChimePendingIntent);

}

广播接收器private BroadcastReceiver chimeReceiver = new BroadcastReceiver()

{

@Override

public void onReceive(Context context, Intent intent) {

hourlyChime();

mChimeAlarmManager.setExact(

AlarmManager.RTC_WAKEUP,

getMsTillNextHour() + System.currentTimeMillis(),

mChimePendingIntent);

}

};

onDestroy()@Override

public void onDestroy() {

mChimeAlarmManager.cancel(mChimePendingIntent);

super.onDestroy();

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值