Я пытаюсь реализовать приложение, которое запускает сканирование BLE, когда человек с телефоном перемещается, и автоматически отключается, если нет движения более 10 секунд, в то время как обнаружение движения работает нормально пойдет не так с BLEscanner здесь кодstartLeScan: не удается получить BluetoothLeScanner
import android.annotation.SuppressLint;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothManager;
import android.bluetooth.le.BluetoothLeScanner;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends Activity implements SensorEventListener {
private TextView textView,textView1;
private SensorManager mSensorManager;
private Sensor mStepDetectorSensor;
private BluetoothAdapter BA;
private BluetoothManager manager;
private BluetoothDevice device;
long initialseconds;
public static String Address;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager =(SensorManager)getSystemService(Context.SENSOR_SERVICE);
mStepDetectorSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
BA = manager.getAdapter();
// BA = BluetoothAdapter.getDefaultAdapter();
timeup t = new timeup();
t.start();
}
public void onSensorChanged(SensorEvent event) {
long initialtime=System.currentTimeMillis();
initialseconds=initialtime/1000;
if(!BA.isEnabled()){
BA.enable();
discoverBLEDevices();
}
}
@SuppressLint("NewApi")
private void discoverBLEDevices() {
Log.e("HIT", "HIT");
BA.startLeScan(mLeScanCallback);
}
@SuppressLint("NewApi")
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@SuppressLint("NewApi")
public void onLeScan(final BluetoothDevice device, int rssi,
byte[] scanRecord) {
Address = device.getAddress();
String Name = device.getName();
}
};
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
}
@Override
public void onResume()
{
super.onResume();
mSensorManager.registerListener(this, mStepDetectorSensor, SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
public void onPause()
{
super.onPause();
mSensorManager.unregisterListener(this);
}
public class timeup extends Thread{
public void run(){
boolean always=true;
while(always) {
long currenttime=System.currentTimeMillis();
long currentseconds=currenttime/1000;
if(currentseconds-initialseconds>10){
BA.disable();
}
}
}
}
ошибка показывает Вход как:
timeStamp/com.domain.www D/BluetoothAdapter: startLeScan: cannot get BluetoothLeScanner
Пожалуйста, будьте более конкретным. В какой части кода это не удается? Какая ошибка? –
BA.startLeScan (mLeScanCallback); он записывает хит, но затем говорит startLeScan(): null startLeScan: невозможно получить BluetoothLeScanner –