Android &引用;无法联系服务以设置扫描周期";-在ble扫描期间

Android &引用;无法联系服务以设置扫描周期";-在ble扫描期间,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,我正在使用后台服务和活动扫描ble。所以,当后台服务和活动同时运行时,扫描就不会被赋予任何信标。所以,当扫描活动打开时,我停止服务,然后它会出现“无法联系服务以设置扫描周期”错误。在“活动”中停止扫描之后,我首先进行了相同的设置—前台活动和后台服务,两者都与外围设备通信 但是,我重写了我的活动,只是为了与服务通信——只有后者与服务通信: public class MainActivity extends Activity { private Intent mServiceIntent;

我正在使用后台服务和活动扫描ble。所以,当后台服务和活动同时运行时,扫描就不会被赋予任何信标。所以,当扫描活动打开时,我停止服务,然后它会出现“无法联系服务以设置扫描周期”错误。在“活动”中停止扫描之后,我首先进行了相同的设置—前台活动和后台服务,两者都与外围设备通信

但是,我重写了我的活动,只是为了与服务通信——只有后者与服务通信:

public class MainActivity extends Activity {
    private Intent mServiceIntent;
    private ScanService mService;
    private ServiceConnection mServiceConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder binder) {
              ScanBinder sb = (ScanBinder) binder;
              mService = sb.getService();
              mService.setActivity(MainActivity.this);
              Utils.showToast(MainActivity.this, "Connected to service");
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
              Utils.showToast(MainActivity.this, "Disconnected from service");
              mService.setActivity(null);
              mService = null;
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mServiceIntent = new Intent(this, ScanService.class);
        startService(mServiceIntent);
......

public class ScanService extends Service {
    private Activity mActivity;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (mActivity != null)
            Utils.showToast(this, "Service (re)started");

        return START_STICKY;
    }

    public void setActivity(Activity activity) {
        mActivity = activity;
    }
Lars Vogel在教程中描述了这种交流