2016-08-02 38 views
0

定期的な間隔ではない特定の瞬間に時計を振動させようとしています。Android Wear - 目覚まし時計が目を覚まさない

時計の画面がオンのときは問題はありませんが、時計の画面が暗くなっても機能していません。

ここでWakeLocksのアンドロイドデベロッパーのページを読んでいますが、これは私が必要と思うものです...しかし、それは私のためには機能しません。私のコードは以下の通りですが、何か間違っていますか?

まず、私のマニフェストファイルでは、私が持っている:画面がオンにならないと時計が振動しない

PowerManager.WakeLock wakeLock; 

     @Override 
     public void onCreate(SurfaceHolder holder) { 
      super.onCreate(holder); 

      PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
      wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG); 
     } 

     private void vibrate(int duration) { 
      wakeLock.acquire(); 
      Vibrator v = (Vibrator) getBaseContext().getSystemService(Context.VIBRATOR_SERVICE); 
      v.vibrate(duration); 
      wakeLock.release(); 
     } 

:ここ

<uses-permission android:name="android.permission.WAKE_LOCK" /> 

は、私のコードの一部です。 ..私は間違って何をしていますか?

ありがとうございました!

+0

また、あなたがマニフェストで振動する権限を宣言する必要があり、振動を機能させるためにそれを覚えていますか?コードが必要な間隔で実行されているかどうかを(たとえばlogcatから)教えてもらえますか? – String

答えて

0

通知が届いても時計が振動しない場合や、通知がまったく表示されない場合は、各手順の後に時計を確認して通知が機能し始めているかどうかを確認してください。下記のtroubleshooting手順を試してください:

  • 時計がシネマモードでないことを確認してください。
  • 携帯電話で通知を受け取っていることを確認してください。
  • 特定のアプリの通知をブロック(ブロック)していないことを確認してください。
  • 携帯端末のアプリ通知とシステム通知がオンになっていることを確認してください。
  • 携帯電話がインターネットに接続されていることを確認します。
  • 時計がスマートフォンやタブレットとペア設定されていることを確認してください。
  • 携帯電話と時計を再調整してみてください。
  • これらのアプリが最新のものであることを確認してください:Google Playサービス、Google、Android Wear

フラグFLAG_KEEP_SCREEN_ONを使用してデバイスをスリープ状態にしてみてください。

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
} 

このアプローチの利点は、ウェイクロックとは異なり、それは特別な許可を必要としないことである、とプラットフォームが正しくアプリが未使用のリソースを解放を心配する必要がなく、アプリケーション間を移動するユーザーを管理します。これを実装する

もう一つの方法は、android:keepScreenOn属性を使用して、アプリケーションのレイアウトXMLファイルである:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:keepScreenOn="true"> 
... 
</RelativeLayout> 

android:keepScreenOn="true"を使用すると、FLAG_KEEP_SCREEN_ONを使用するのと同じです。アプリに最適なアプローチを使用できます。

0

時計をインタラクティブにしたい場合は、覚醒ロックを取得したままにしておく必要があります(振動を継続するには、振動するために対話型でなければなりません)が、直後に覚醒ロックを解除しているようですそれを取得する。

ウェイクロックを取得することは危険があります。ウォッチフェイスサービス(コードスニペットからはわからない)からコードを実行している場合は、ウェイクロックを取得する際に透過的なアクティビティを開始し、この方法では、振動を止めてウェイクロックを解除する手段としてアクティビティライフサイクルを使用しています。これはustwo Timer Watch Faces(タイマーが切れたときにインタラクティブモードで時計の顔が点滅して振動する)で実装したもので、うまくいきました。このコードが実行を取得しているどのように

<uses-permission android:name="android.permission.VIBRATE" /> 
関連する問題