2013-12-09 4 views
0

Я в настоящее время обновляю свое приложение для Android с помощью Galaxy S3 от Samsung и был шокирован тем, что не мог остановить телефон, останавливавший мое приложение, когда простаивал. С Galaxy S2 нашего отдела эта особая проблема не возникает, если экран становится черным, приложение по-прежнему передает данные на SD-карту и через Wi-Fi-сеть. S3 останавливает любой поток данных.Как я могу предотвратить остановку Galaxy S3 моего приложения при простоях?

Я пробовал теперь работать с настройками энергии и отображения, но до сих пор у меня нет решения проблемы. Мой интернет-поиск тоже не был успешным.

Возможные решения укореняются в новом телефоне и, таким образом, делают расширенные настройки видимыми или увеличивают тайм-аут (который мне не нравится столько, сколько решение).

У вас есть идеи, как решить проблему или общий ввод, который мог бы просветить меня? Thnx!

КСТАТИ: вот это приложение в вопросе (без объявления): Google Play Link

+1

Вам просто нужно принять некоторую форму из [Wake Lock] (http://developer.android.com/reference/android/os/PowerManager.WakeLock.html). –

+0

Я не думаю, что этот вопрос заслуживает того, чтобы быть проголосовавшим, но @ user1677716 вы должны рассказать нам больше о том, как работает ваше приложение (мы программисты, а не обслуживание клиентов). Ожидает ли периодические данные из службы? Как вы делаете обновления датчиков? –

+0

Спасибо, мистер Фальк. Вы действительно помогли мне не стыдиться этого вопроса, я действительно сделал длинный поиск Inet, но не смог найти решение. Приложение использует Android-датчики, такие как встроенные датчики акселерометра и гироскопа, и передает данные, полученные с датчиков на удаленный хост через WiFI, и сохраняет данные в ASCII-формате для последующей обработки. Обновления датчиков вызываются службой датчиков и происходят с ними. 96 Гц. Если вы заинтересованы в том, что мы делаем с приложением: http://www.youtube.com/watch?v=yRd82ZLCGrw. Если у вас есть предложение. как я должен размещать вопросы, дайте мне знать PLZ – user1677716

ответ

2

У меня есть приложение, которое нужно сделать что-то подобное (это работает тренер, поэтому он должен продолжать говорить в то время как пользователь держит их телефон в кармане в течение получаса или около того.)

Прежде всего, оговорка для других людей: не сделайте это, если вам не нужно. Если вам нужно делать что-то периодически, а не постоянно, подумайте об использовании AlarmManager, который может разбудить телефон от сна каждый раз и снова, чтобы что-то сделать, поэтому так сильно не ударяйте аккумулятор пользователя.

Но, если вы уверены, что вам нужно не спать, вам нужно использовать WakeLock. Вот примерно то, что я делаю в моей Службы onStartCommand:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);  
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK;, "RunClockService"); 
mWakeLock.acquire(); 

... где mWakeLock является переменной экземпляра типа PowerManager.WakeLock. PARTIAL_WAKE_LOCK поддерживает работу ЦПУ, но не поддерживает экран. Тег «RunClockService» используется только для отладки, согласно документации. Измените его на имя вашего класса.

Затем, когда я закончу необходимость держать телефон просыпается:

mWakeLock.release(); 

Вам также нужно добавить WAKE_LOCK разрешения на ваш AndroidManifest.xml:

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

Я использовал ваш ответ для редактирования своего кода, и он работает. Это именно то, что нужно приложениям (я также хочу, чтобы процессор работал во время потока данных приложений). tahnk вы очень! – user1677716