2014-07-01 20 views
6

Qualcuno sa come andrei a svegliare la schermata di usura? Sto usando l'API di vibrazione con:Android Wear: Sveglia programmabile

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
v.vibrate(getResources().getInteger(R.integer.vibration_duration)); 

che dovrebbe interrompersi dopo 2 secondi (2000 millisecondi). Funziona alla grande se lo schermo è acceso, ma se lo schermo è spento, la vibrazione continuerà fino a quando lo schermo non viene toccato e risvegliato.

Modifica: Ho creato un attacco rapido per farlo funzionare con un timer, ma vorrei essere in grado di interrompere la vibrazione in modo più pulito.

final Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
    v.vibrate(getResources().getInteger(R.integer.vibration_duration)); 
    Timer timer = new Timer(); 
    timer.schedule(new TimerTask() { 
     @Override 
     public void run() { 
      v.cancel(); 
     } 
    }, getResources().getInteger(R.integer.vibration_duration)); 

rieditare: Che non funziona ogni volta, soooo sì, essendo in grado di riattivare lo schermo sarebbe la soluzione migliore. Ho fatto in modo che funzionasse usando un pattern invece di inserire la durata direttamente, ma mi piacerebbe comunque sapere come attivare lo schermo in quanto ritengo che questo potrebbe causare più problemi lungo la linea mentre continuo a lavorare con questa piattaforma .

long[] pattern = { 0, getResources().getInteger(R.integer.vibration_duration) }; 
    v.vibrate(pattern, -1); 

risposta

3

Utilizzare NotificationCompat.Builder per creare una notifica per l'app e includere un motivo vibratorio. Questo dovrebbe riattivare lo schermo con la tua notifica (e vibrare ancora per l'utente). Il dispositivo indossabile è aggressivo sul ritorno a uno stato di sospensione, in particolare se l'utente non interagisce con esso, quindi questo è probabilmente l'approccio più semplice.

+0

Ho lo stesso problema con il generatore di notifiche. Nessuna vibrazione fino a quando l'utente non tocca lo schermo. – nicolas

1

Ho appena trascorso un po 'di tempo cercando di capire come svegliare il controllo quando avvio un'attività sull'orologio in remoto tramite WearableListenerService. Quello che ho trovato che funziona perfettamente sul mio G Watch R è FLAG_TURN_SCREEN_ON.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);