Я изменил пример чата Bluetooth из демоверсий SDK, чтобы иметь возможность управлять светодиодной матрицей с питанием от Arduino. Используя программу чата, я могу отправлять сообщения на дисплей через Bluetooth. У меня проблема, хотя. Я сделал две компоновки экрана, портрет и пейзаж. Таким образом, интерфейс может занимать как можно больше места на телефоне независимо от ориентации.
Проблема в том, что если телефон поворачивается, вызывается OnDestroy (), чтобы перезагрузить новый макет (альбомную или книжную). В процедуре OnDestroy () я также уничтожаю ссылку bluetooth, если она установлена:
public void onDestroy() {
super.onDestroy();
// Stop the Bluetooth chat services
if (mChatService != null)
mChatService.stop();
if (D)
Log.e(TAG, "--- ON DESTROY ---");
}
Читая другие посты здесь, я обнаружил, что вы можете предотвратить остановку сервиса, добавив "android: configChanges =" Ориентация "" в манифест. При этом, когда я поворачиваю экран, моя связь Bluetooth с дисплеем больше не прерывается, однако теперь экран не перерисовывается в альбомном режиме.
Чтобы исправить это, я думаю об удалении раздела «if mchatservice ...», который завершает соединение, но тогда мне все равно понадобится код для запуска при окончательном завершении приложения.
Есть ли способ перерисовать экран при повороте, не прерывая соединение? Если нет, я думаю, что я всегда могу переместить служебный код в событие OnPause (), однако это приведет к разрыву соединения, если приложение когда-либо потеряет фокус на землю.
Есть ли другие способы?
Спасибо.