2014-12-14 2 views
2

Привет, Я разрабатываю приложение, в котором мне нужно найти время, проведенное пользователем в определенном приложении, таком как Facebook.Как найти время, потраченное на любое приложение Android

Всякий раз, когда пользователь провел x минут, я хочу дать некоторую награду пользователю. Есть ли хороший подход к достижению этого в Android?

+0

Вы имеете в виду, что вам нужно измерить время, потраченное на ** другое ** приложение, которое будет создано вашим зданием? – shkschneider

+0

@shkschneider Да, я хочу измерить, сколько времени пользователь потратил на другие приложения. Если пользователь закончил x минут, то я хочу дать некоторый кредит пользователю. –

+0

Вы можете попробовать прочитать файлы журнала, http://stackoverflow.com/questions/3290936/android-detect-when-other-apps-are-launched – AcidBurn

ответ

2

Как указано в вопросе Detect When other Application opened or Launched, вы не можете прослушивать другие сигналы запуска приложений, но вы можете часто просматривать список открытых приложений, чтобы проверить, является ли приложение, которое вы ищете, а) работает и b) в на переднем плане.

Вам нужно будет запустить это приложение как услугу в фоновом режиме, и я уверен, что это может привести к разрушительным последствиям для аккумулятора телефона пользователя.

+0

Если вы видите приложение applock https://play.google.com/store/apps/details?id=com.domobile.applock&hl=en, то как они ребята делают, потому что это не сильно влияет на время автономной работы. –

+0

Подчеркните на * возможно *. Можно написать пробоотборник, чтобы он спал между обновлениями и сохранял время автономной работы: это было скорее «осторожно», а не «вы не можете этого сделать!";) –

+0

Ну, он может слушать, если экран телефона включен, а затем делать образец на открытых приложениях. Если он не проверяет каждую миллисекунду, я не думаю, что это будет разрушительно при работе от батареи. –

0

Вам понадобится фон Service, который будет проверять активность телефона (приложения на переднем плане) и подсчитывать время их активного/переднего плана.

приложений Список переднего плана

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

Вы можете обнаружить в настоящее время на переднем плане приложения с ActivityManager.getRunningAppProcesses(). Он вернет список RunningAppProcessInfo записей.

Чтобы определить, какое приложение находится на переднем плане, проверьте RunningAppProcessInfo.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND.

Сколько времени было потрачено на него

Process.getElapsedCpuTime() лучше пойти ИМХО.

К сожалению, я не знаю, как получить Process другое приложение ...

Таким образом, вы могли бы иметь циклическое Service увеличивающихся потраченное время каждое приложение находится на переднем плане, но это не было бы супер Я боюсь.

Другим способом было бы контролировать себя открытием этих приложений, и когда они покинут его и вернутся к вам, оцените затраченное время на переднем плане в этот момент.

Просто некоторые мысли, у меня нет полного ответа, извините.

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