2013-11-21 2 views
0

Я работаю над проектом личной электроники, и я хотел бы создать приложение для регистрации данных GPS в дополнение к нескольким другим вещам.Регистрация данных с помощью GPS и Bluetooth (разработка приложений)

Проект представляет собой автоматический переключатель передач велосипедов (он автоматически переключит передачи на основе ряда факторов, таких как скорость, педаль каденции, угол гироскопа и т. Д.). Кроме того, я хотел бы создать приложение, в котором будут записываться такие вещи, как скорость, маршруты, количество часов езды и т. Д. Чтобы сэкономить деньги, я хотел бы использовать свой Android-телефон как экран для отображения некоторых из этих жизненно важных функций как данные регистрации с GPS.

Я очень новичок в разработке Android, но мой вопрос заключается в следующем: можно ли было бы говорить, что телефон автоматически начинает регистрировать данные (и, возможно, открывает приложение, в зависимости от того, что я решаю) после его подключения на велосипеде через Bluetooth? И одновременно, я хотел бы, чтобы он остановил и закрыл приложение, как только он был отключен.

Благодаря

ответ

2

Проблема, как я вижу, как вы планируете подключение к Bluetooth радио велосипеда. Обычно приложение инициирует соединение Bluetooth (которое отличается от спаривания). Запуск службы в фоновом режиме, которая ищет ваше устройство Bluetooth и соединение, как правило, не будет хорошим решением, поскольку поиск устройств Bluetooth очень ресурсоемкий.

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

Вторая часть, чтобы остановить приложение, когда соединение отбрасывается (выходит за пределы диапазона, или устройство на байке отключает соединение), довольно прямолинейно. Сделать широковещательный приемник:

public class DisconnectBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(BasicDMMView.this, "Device disconnected!", Toast.LENGTH_SHORT).show(); 
        // Close anything you need to (log files etc.) 
     finish(); 
    } 

} 

А затем зарегистрировать приемник, как только вы открыли соединение БТ:

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED); 
mReceiver = new DisconnectBroadcastReceiver(); 
registerReceiver(mReceiver, filter); 

И не забудьте отменить приемник, когда вы покидаете активность:

unregisterReceiver(mReceiver); 
Смежные вопросы