2015-03-26 2 views
1

Я создаю приложение для Android, которое должно запускаться на каждом устройстве с низкой энергией Bluetooth, что означает minSDK из 18. Я не уверен, какой целевой целевой экран должен использовать. Я читал в Интернете, что это хорошая практика всегда использовать последнюю версию для этого (API 22). В этом случае, или мне нужно создать мое приложение с каждым поддерживаемым targetSDK, то есть строить с помощью SDK 18 для приложений, которые запускают API 18, строить с помощью SDK 19 для устройств с API 19, ...?Какая цельSDK использовать для BLE?

Я смущен, так как для начала обнаружения BLE я могу использовать либо startScan(), либо startLeScan(). Документация Android говорит мне: «startLeScan() устарел на уровне API 21, вместо этого используйте startScan()». Я не уверен, какое влияние это оказывает на таргетинг TargetSDK, который я должен использовать для компиляции моего приложения. Будут ли устройства, работающие с API 18, запускать мое приложение, если я скомпилирую SDK 22 и использовать startScan(), и смогут ли устройства, работающие с API 22, запускать мое приложение, если я скомпилирую API 18 и использую startLeScan()? Или я должен просто создать свое приложение с каждым целевымSDK, который я поддерживаю, как упомянуто выше?

+0

См. Http://stackoverflow.com/a/10881129/295004 –

ответ

5

Позвольте мне ответить на это за вас.

1) Вы уже знаете, что minSDK должно быть 18 (прохладно). Потому что поддержка LE там есть или после этого.

2) Если вы создадите приложение с помощью целевого sdk 18, оно также будет работать и на устройствах, поддерживающих Android 5.0/5.1.

3) Если вы строите ваше приложение, используя цель> 21 SDK и использовать startLeScan вместо startScan (startScan вводится в 5.0/sdk21), он будет работать на всех устройствах, работающих на> 18 уровня API.

4) Теперь сложная часть, есть и другие apis, которые доступны на 5.0+, которые отсутствовали в более низких версиях. Я предлагаю создать приложение, используя цель последнего sdk (в настоящее время 23). i) Используйте различные apis для достижения одинаковых результатов в разных версиях. Например, если телефон работает ниже Android 5.0, используйте startLeScan, иначе startScan. ii) Существуют также различия в Android 5.0 и 5.1, поэтому используйте эти методы соответственно.

5) Некоторые APIs как startLeScan являются осуждается, но я знаю, что они все еще работают, как они связали их с новым APIs. поэтому, пока они не удалят старый apis, они будут работать на всех платформах. Это именно то, что неодобрение значит :)

Так ответ на ваш вопрос «какие целевой SDK должна быть использована», ответа является последним SDK :), и вызвать соответствующие интерфейсы на основе SDK версии. Вы можете получить версию SDK во время выполнения через android.os.Build.VERSION.SDK_INT

+0

Спасибо за подробный ответ. Поэтому, если я правильно понимаю, приложения для Android всегда создаются с использованием одного и того же целевогоSDK независимо от того, какой номер API они должны запускаться, но с предложениями if/else на основе VERSION.SDK_INT? Таким образом, другими словами, когда я загружаю приложение из Play Store (например, Dropbox), я загружаю тот же APK, выполняю ли я JellyBean или Lollipop? – Nimyz

+0

Нет, это зависит от того, какие версии Android-устройств вы поддерживаете. Для вашего случая вы можете скомпилировать последнюю версию SDK, так как последние sdk также имеют один и тот же apis (устаревший), и он будет работать на старой и новой версии. Предположим, что у последней версии SDK нет apis, которые были доступны в старых версиях, и вы хотите использовать эти apis. В этом случае вы не сможете запускать одно и то же приложение в старой версии и наоборот. Да, вы загружаете один и тот же apk для всех версий (если apk не поддерживает версию вашей ОС телефона, тогда вы не сможете установить приложение, период). – AAnkit

+0

Я опубликовал редактирование, прежде чем заканчивать комментирование изменений, я думаю, что оригинальный автор смутил, какой был устаревший метод, в соответствии с этим: http://developer.android.com/reference/android/bluetooth/le/BluetoothLeScanner.html startScan - это новый метод и startLeScan, который устарел. – user1977132

1

Я бы рекомендовал использовать Android 5.0 и выше. Зачем? This video довольно четко заявляет: «BLE на Android ниже 5.0 дерьмова».

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