2016-11-24 2 views
0

У меня есть код для получения статуса экрана. То, что я пытаюсь сделать, - сделать своего рода хронометр для измерения прошедшего времени, когда телефон открыт или используется в моем приложении для Android. когда экран включен, телефон используется, я так думал. если есть какой-либо другой способ, я хочу знать. Ответ here не был хорошим, я пробовал и не работал onresume, я не знаю, почему ... И я думаю, что это нехороший способ, а не профессионал. Мне нужна ваша помощь, чтобы вычислить прошедшее время, пока телефон используется. Благодарякак измерить прошедшее время, когда телефон используется

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ///start calculating the elapsed time 

    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
    filter.addAction(Intent.ACTION_SCREEN_OFF); 
    BroadcastReceiver mReceiver = new ScreenReceiver(); 
    registerReceiver(mReceiver, filter); 

} 

@Override 
protected void onPause() { 
    if (ScreenReceiver.screenMod) { 
     Toast.makeText(getApplicationContext(),"turn off",Toast.LENGTH_SHORT).show(); 

     /////stop calculating 
    } else { 
    } 
    super.onPause(); 
} 

@Override 
protected void onResume() { 
    if (!ScreenReceiver.screenMod) { 
     Toast.makeText(getApplicationContext(),"turn on",Toast.LENGTH_LONG).show(); 

     ////continue calculating 
    } else { 
    } 
    super.onResume(); 
} 
} 

ScreenReceiver.class

public class ScreenReceiver extends BroadcastReceiver { 

public static boolean screenMod = true; 

@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 

     screenMod = false; 
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 

     screenMod = true; 
    } 
} 
} 

ответ

0

Вы можете сделать это без использования каких-либо щ interraction. Просто объявите приемник вещания в манифесте. Когда вы получаете Intent.ACTION_SCREEN_ON, создайте переменную, которая удерживает системное время с System.currentTimeMillis(). Сохраните еще одну переменную, которая имеет значение Когда вы получаете событие Intent.ACTION_SCREEN_OFF. Рассчитайте разницу между значениями, которые вы получите время использования телефона в миллисекундах. Суммируйте это с sharedpreferences в последний раз

Смежные вопросы