2013-02-16 5 views
1

Я разрабатываю приложение, которое должно использовать как wifiLock, так и wakeLock, чтобы потоковая передача звука при выключенном экране не нарушалась. Я пробовал свое приложение на Android 2.3 и wakeLock, и похоже, что wifiLock работает так, как ожидалось, поэтому нет никакой разницы между включенным или выключенным экраном, но такое же приложение на Android 4.2 (Jelly-bean), когда экран отключается, не работает, и звук становится прерывистым, который показывает, что wakeLock или wifiLock работают некорректно. Есть ли причина для этого?wifiLock и wakeLock работают неправильно на Android

Вот как я приобретаю и освободить замки, в моей основной деятельности у меня есть:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MyWirelessHeadphone"); 

    WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL , "MyWifiLock"); 
    ... 
} 



@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if (wakeLock.isHeld()==true) 
     wakeLock.release(); 
    if (wifiLock.isHeld()==true) 
     wifiLock.release(); 
} 

ответ

0

Вы приобретаете замок в деятельности, и когда ваша деятельность идет в стек, система может удалить и уничтожить ваша деятельность, и это может быть причиной вашей проблемы. Попытайтесь приобрести замок в сервисе. Но комбинация PARTIAL lock и WIFI не работает должным образом на некоторых устройствах, а также видит этот вопрос: Android WifiLock not working?

1

Я только что наткнулся на этот вопрос - возможно, на пару лет слишком поздно для ОП, но на всякий случай это помогает кому-то еще, вы, вероятно, нужно использовать WIFI_MODE_FULL_HIGH_PERF вместо WIFI_MODE_FULL, так как это может привести к потоковые вопросы:

wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF , "MyWifiLock"); 

Я бы, наверное, смотреть на потоковое аудио в Service вместо Activity тоже, особенно, как вы появляетесь чтобы проектировать его с идеей работать в фоновом режиме.

+0

WIFI_MODE_FULL_HIGH_PERF - правильный ответ, он позволяет принимать новые входящие TCP-соединения – Poppyto