【问题标题】:Error when using fusedLocationProvider.removeLocationUpdates (locationCallback) Android Studio使用 fusedLocationProvider.removeLocationUpdates (locationCallback) Android Studio 时出错
【发布时间】:2021-04-13 08:37:50
【问题描述】:

我正在编写一个代码来捕获用户的当前位置并在准确的时刻跟踪 GPS 坐标。

我正在使用 2 个按钮,一个是用于开始录制的“RecordButton”按钮,此时 gps 跟踪也已启动。

以及用于停止所有跟踪的 StopButton 按钮。只有当stopButton被按下时,app仍然会发送坐标并且不会停止发送。

已经尝试使用

fusedLocationProviderClient.removeLocationUpdates(locationCallback);在 StopRecordButton 侦听器中。

如果有人能帮助我,我将不胜感激。

我的代码:

cameraActionButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {   //Botão de Gravação do App; (Record button Action)

                    final HHConfigTCPClient hhudpClient = new HHConfigTCPClient(prefs.getString("prefServerIp", ""),
                            8085);

                    final boolean _paused = state.isPaused();


                    switch (cameraAction) {
                        case RECORD:
                            //Uma thread para rodar a localização
                            new Thread(new Runnable() {
                                @Override
                                public void run() {
                                    MjpegFragment.this.getActivity().runOnUiThread(new Runnable() {
                                        @Override
                                        public void run() {

                                            fusedLocationProviderClient = new FusedLocationProviderClient(getActivity());
                                            locationRequest = new LocationRequest();
                                            locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
                                            locationRequest.setFastestInterval(4000);
                                            locationRequest.setInterval(2000);
                                            if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
                                                    != PackageManager.PERMISSION_GRANTED &&
                                                    ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION)
                                                            != PackageManager.PERMISSION_GRANTED) {
                                                return;
                                            }
                                            fusedLocationProviderClient.requestLocationUpdates(locationRequest, new LocationCallback() {
                                                @Override
                                                public void onLocationResult(final LocationResult locationResult) {
                                                    super.onLocationResult(locationResult);
                                                    t.scheduleAtFixedRate(mTimerTask = new TimerTask() {
                                                        public void run() {
                                                            hhudpClient.set(HHConfigTCPClient.PROPERTY.LATITUDE, locationResult.getLastLocation().getLatitude());
                                                            state.setLatitude(locationResult.getLastLocation().getLatitude());
                                                            hhudpClient.set(HHConfigTCPClient.PROPERTY.LONGITUDE, locationResult.getLastLocation().getLongitude());
                                                            state.setLongitude(locationResult.getLastLocation().getLongitude());
                                                        }
                                                    }, 4000, 2000);
                                                }
                                            }, Looper.getMainLooper());


                                        }
                                    });
                                }

                            }).start(); 


stopRecordButton.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {

                    final HHConfigTCPClient hhudpClient = new HHConfigTCPClient(prefs.getString("prefServerIp", ""),
                            8085);


                    new Thread(new Runnable() {
                        @Override
                        public void run() {

                            HHConfigTCPClient hhudpClient = new HHConfigTCPClient(prefs.getString("prefServerIp", ""),
                                    8085);

                            final double timestamp = System.currentTimeMillis();


                            if (hhudpClient.set(HHConfigTCPClient.PROPERTY.RECORD, 0.0, timestamp)) {
                                fusedLocationProviderClient.removeLocationUpdates(locationCallback);


                            } else {
                                MjpegFragment.this.getActivity().runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        showToast("Falha de Comunicação: comando stop.");
                                    }
                                });
                            }


                        }
                    }

                    ).start();
                }
            });

【问题讨论】:

    标签: java android android-studio android-gps fusedlocationproviderapi


    【解决方案1】:
    This error appears on my Android Studio:
    
    E/AndroidRuntime: FATAL EXCEPTION: Thread-7
        Process: br.com.visit.hammerhead2, PID: 15224
        java.lang.NullPointerException: Listener must not be null
            at com.google.android.gms.common.internal.Preconditions.checkNotNull(Unknown Source:9)
            at com.google.android.gms.common.api.internal.ListenerHolders.createListenerKey(Unknown Source:2)
            at com.google.android.gms.location.FusedLocationProviderClient.removeLocationUpdates(Unknown Source:6)
            at br.com.visit.hammerhead2.fragments.MjpegFragment$6$1.run(MjpegFragment.java:718)
            at java.lang.Thread.run(Thread.java:919) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 2015-09-20
      • 2021-01-31
      • 2015-08-31
      相关资源
      最近更新 更多