Exige le service de localisation pour faire fonctionner le scan

This commit is contained in:
Louis-Guillaume DUBOIS 2017-06-06 17:01:21 +02:00
parent 5e53e8fd85
commit 14c67e3abb
3 changed files with 46 additions and 24 deletions

View file

@ -31,6 +31,9 @@
<uses-feature <uses-feature
android:name="android.hardware.bluetooth_le" android:name="android.hardware.bluetooth_le"
android:required="true" /> android:required="true" />
<uses-feature
android:name=" android.hardware.location"
android:required="true" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

View file

@ -26,8 +26,10 @@ import android.bluetooth.BluetoothManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.location.LocationManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -54,6 +56,7 @@ public class DeviceScanActivity extends ListActivity {
private static final int REQUEST_ENABLE_COARSE_LOCATION = 2; private static final int REQUEST_ENABLE_COARSE_LOCATION = 2;
private static final int REQUEST_ENABLE_BT = 1; private static final int REQUEST_ENABLE_BT = 1;
// Stops scanning after 10 seconds. // Stops scanning after 10 seconds.
private static final long SCAN_PERIOD = 10000; private static final long SCAN_PERIOD = 10000;
@ -145,14 +148,33 @@ public class DeviceScanActivity extends ListActivity {
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
// Vérifie si le service de localisation est actif sur lappareil
boolean location_enabled;
try {
location_enabled = Settings.Secure.LOCATION_MODE_OFF !=
Settings.Secure.getInt(
getContentResolver(),
Settings.Secure.LOCATION_MODE
);
} catch (Exception e) {
e.printStackTrace();
location_enabled = false;
}
// Si le service de localisation nest pas activé,
// demande de lactiver dans les paramètres du système.
if (!location_enabled) {
Toast.makeText(this, "Prière dactiver une source de localisation.", Toast.LENGTH_LONG).show();
Intent enableLocationIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(enableLocationIntent);
}
// Ensures Bluetooth is enabled on the device. If Bluetooth is not currently enabled, // Ensures Bluetooth is enabled on the device. If Bluetooth is not currently enabled,
// fire an intent to display a dialog asking the user to grant permission to enable it. // fire an intent to display a dialog asking the user to grant permission to enable it.
if (!mBluetoothAdapter.isEnabled()) {
if (!mBluetoothAdapter.isEnabled()) { if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
} }
}
// Initializes list view adapter. // Initializes list view adapter.
mLeDeviceListAdapter = new LeDeviceListAdapter(); mLeDeviceListAdapter = new LeDeviceListAdapter();
@ -181,16 +203,6 @@ public class DeviceScanActivity extends ListActivity {
protected void onListItemClick(ListView l, View v, int position, long id) { protected void onListItemClick(ListView l, View v, int position, long id) {
final BluetoothDevice device = mLeDeviceListAdapter.getDevice(position); final BluetoothDevice device = mLeDeviceListAdapter.getDevice(position);
if (device == null) return; if (device == null) return;
if (false) {
final Intent intent = new Intent(this, DeviceControlActivity.class);
intent.putExtra(DeviceControlActivity.EXTRAS_DEVICE_NAME, device.getName());
intent.putExtra(DeviceControlActivity.EXTRAS_DEVICE_ADDRESS, device.getAddress());
if (mScanning) {
mBluetoothAdapter.stopLeScan(mLeScanCallback);
mScanning = false;
}
startActivity(intent);
} else {
final Intent intent = new Intent(this, SimpleDetailActivity.class); final Intent intent = new Intent(this, SimpleDetailActivity.class);
intent.putExtra(SimpleDetailActivity.EXTRAS_DEVICE_NAME, device.getName()); intent.putExtra(SimpleDetailActivity.EXTRAS_DEVICE_NAME, device.getName());
intent.putExtra(SimpleDetailActivity.EXTRAS_DEVICE_ADDRESS, device.getAddress()); intent.putExtra(SimpleDetailActivity.EXTRAS_DEVICE_ADDRESS, device.getAddress());
@ -198,8 +210,6 @@ public class DeviceScanActivity extends ListActivity {
mBluetoothAdapter.stopLeScan(mLeScanCallback); mBluetoothAdapter.stopLeScan(mLeScanCallback);
mScanning = false; mScanning = false;
} }
startActivity(intent);
}
} }
private void scanLeDevice(final boolean enable) { private void scanLeDevice(final boolean enable) {

13
TODO.md
View file

@ -3,15 +3,24 @@
Par ordre décroissant durgence : Par ordre décroissant durgence :
- documentation du code Android ;
- prise en charge de lécriture des caractéristiques ; - prise en charge de lécriture des caractéristiques ;
- ... - ...
- bouton « presse-papier » - bouton « presse-papier »
- bouton « partager » avec date, description etc. - bouton « partager » avec date, description etc.
- historique ou graphe des mesures. - historique ou graphe des mesures.
Fait Soutenance
----- ----------
- diapositives + présentation : 20'
- démo
Fait
----
- vérification de lactivation de la localisation ;
- affichage de la date de la dernière mesure ; - affichage de la date de la dernière mesure ;
- prise en charge des notifications des caractéristiques ; - prise en charge des notifications des caractéristiques ;
- filtrage des services et caractéristiques dans lactivité « DeviceControl » ; - filtrage des services et caractéristiques dans lactivité « DeviceControl » ;