2016-03-03 10 views
0

我的目標是做一個切換按鈕來請求和刪除Android位置updates.How可以修改此代碼通過單擊相同的ImageButton刪除位置更新?如何創建切換按鈕來訂閱和移除Android中的融合位置更新?

ImageButton park_search = (ImageButton)findViewById(R.id.Park); 
      park_search.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        LocationServices.FusedLocationApi.requestLocationUpdates(MainActivity.mGoogleApiClient, 
        currentLocationRequest, new CurrentLocationListener(blocks)); 
       } 
      }); 


    private class CurrentLocationListener implements LocationListener { 

      List<LatLng> pBlocks = new ArrayList<LatLng>(); 


      CurrentLocationListener(List<LatLng> blocks){ 
       this.pBlocks = blocks; 

      } 


      @Override 
      public void onLocationChanged(Location location) { 

       if(!MainActivity.isActive) { 
        Location endLoc = new Location(""); 
        endLoc.setLongitude(pBlocks.get(0).longitude); 
        endLoc.setLatitude(pBlocks.get(0).latitude); 

        float distance = endLoc.distanceTo(location); 

        MainActivity.text_parking_info.setText("Dist = "+(int)distance); 

        if (distance < 50) { 
        //Do something 
        } 
       }else{ 
        LocationServices.FusedLocationApi.removeLocationUpdates(MainActivity.mGoogleApiClient, this); 
       } 

      } 

     } 

回答

0

設置一個View.setTag到該按鈕(ImageButton的),你可以做到這一點。

park_search.setTag(false);//setting default as false 
    park_search.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      boolean status= !((boolean) view.getTag());// reverse the current status 
      if(status){ 
       //start location updates. 
       LocationServices.FusedLocationApi.requestLocationUpdates(MainActivity.mGoogleApiClient,currentLocationRequest, new CurrentLocationListener(blocks)) 
      }else{ 
       //remove location updates. 
       LocationServices.FusedLocationApi.removeLocationUpdates(MainActivity.mGoogleApiClient, this); 
      } 
      view.setTag(status);//update status 
     } 
    }); 

Happy_Coding;