Ciao Voglio impostare la sveglia quando il telefono non è stato toccato. Se lo schermo non è stato toccato per circa 2 minuti, il suono della sveglia si alza. Come posso fare questo? Qualcuno può aiutarmi? Grazie in anticipo.Come impostare la sveglia quando il cellulare è inattivo con Android?
risposta
Passare il codice AlarmService tramite il codice riportato di seguito. Questo troverà quanto a lungo il dispositivo è rimasto inattivo.
idle.java
Handler hl_timeout = new Handler();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try{
hl_timeout.postDelayed(DoOnTimeOut, 15000);
}catch(Exception e)
{
e.printStackTrace();
}
}
// Toast
Thread DoOnTimeOut = new Thread() {
public void run() {
try{
Toast.makeText(getApplicationContext(), "System is idle", Toast.LENGTH_LONG).show();
}catch(Exception e)
{
e.printStackTrace();
}
}
};
@Override
public void onUserInteraction()
{
super.onUserInteraction();
//Remove any previous callback
try{
hl_timeout.removeCallbacks(DoOnTimeOut);
hl_timeout.postDelayed(DoOnTimeOut, 15000);
}catch(Exception e)
{
e.printStackTrace();
}
}
Spero che questo ti aiuta.
È possibile creare AlarmService per riprodurre l'audio anche quando l'applicazione/dispositivo è inattivo
Estendere Metodo onUserInteraction di classe di attività per azzerare il timer e ripartire per due minuti.
Se ho compreso correttamente la domanda, è necessario attivare un allarme, quando non si verificano interazioni dell'utente entro un intervallo di tempo. E uno dei requisiti principali, non c'è la tua attività in esecuzione in primo piano. Quindi il caso di onUserInteraction non funziona per te. In questo caso è ancora possibile ricevere aggiornamenti su ogni azione dell'utente se si crea il proprio AccessibilityService.
Aggiungi questo al vostro manifesto per dichiarare il servizio:
<service android:name=".MyAccessibilityService">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
</service>
E l'implementazione del servizio dovrebbe essere simile a questo:
public class MyAccessibilityService extends AccessibilityService
{
@Override
public void onServiceConnected() {
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
// we are interested in all types of accessibility events
info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
// we want to receive events in a certain interval
info.notificationTimeout = 100;
setServiceInfo(info);
Log.e("ALEX", "service connected!");
}
@Override
public void onAccessibilityEvent(AccessibilityEvent arg0)
{
Log.e("ALEX", "Event happened!");
}
}
Ora qualsiasi utente momento tocca lo schermo, ad esempio, si vuole get onAccessibilityEvent() attivato e sarà in grado di riavviare un timer che avvierà il tuo allarme.
TUTTAVIA, questo approccio ha uno svantaggio: per farlo funzionare, è necessario andare alle impostazioni del telefono -> Accessibilità e abilitare la vostra applicazione lì. In caso contrario, il sistema non avvierà il servizio.
Hai la parte di rilevare l'utente che non tocca lo schermo per due minuti? - Sembra complicato: http://stackoverflow.com/questions/4208730/how-to-detect-user-inactivity-in-android – Nobita
intendevi dire come screen saver? – Lucifer
No, non è così. Volevo dire che voglio impostare la sveglia quando la mia applicazione è rimasta inattiva per 30 secondi. Questo è tutto. – malavika