2016-06-15 7 views
0

ボタンをクリックするとあなたの位置が表示され、正確な固定位置と比較され、あなたとその場所の間の距離がわかります。サービスにクリックされるとアプリケーションが起動すると実行され、アプリケーションが終了するまで実行され続けます。ここにボタンコードがありますクリックしてボタンをクリックするとサービスが開始されます

   @Override 
      public void onClick(View arg0) { 
       // create class object 
       gps = new GPSTracker(AndroidGPSTrackingActivity.this); 
       TextView status = (TextView) findViewById(R.id.status); 
       TextView where = (TextView) findViewById(R.id.where); 
       TextView greet = (TextView) findViewById(R.id.greet); 

       // check if GPS enabled 
       if (gps.canGetLocation()) { 
        double datapostLat = -26.106589; 
        double datapostLong = 28.015150; 
        double latitude = gps.getLatitude(); 
        double longitude = gps.getLongitude(); 
        // \n is for new line 
        Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); 
        status.setText("YOUR LOCATION" + "\n" + "Latitude: " + latitude + "\n" + "Longitude: " + longitude); 
        try { 
         float[] results = new float[1]; 
         Location.distanceBetween(latitude, longitude, datapostLat, datapostLong, results); 
         System.out.println(results[0]); 
         where.setText("You are: " + results[0] + " M" + " Away from Datapost"); 
//      Toast.makeText(AndroidGPSTrackingActivity.this, ""+ results[0] +"", Toast.LENGTH_SHORT).show(); 
         if(results[0]<50) { 
          greet.setText("Welcome to Datapost"); 
         } else { 
          greet.setText("You are leaving Datapost"); 
         } 
        } catch (Exception e) { 
         e.getStackTrace(); 
         //for debugging 
         Toast.makeText(AndroidGPSTrackingActivity.this, "error: " + "\n" + e, Toast.LENGTH_SHORT).show(); 
        } 

       } else { 
        // can't get location 
        // GPS or Network is not enabled 
        // Ask user to enable GPS/network in settings 
        gps.showSettingsAlert(); 
       } 


      } 

要するに、このボタンの代わりに簡単なサービスをする必要がありますか?

+0

やボタンは、そのが既に実行されている場合はサービスチェックをクリックしていない場合、それは –

+0

を開始したとき、それはようであるCA私はこれを聞いて、なぜthatsのサービスに精通していないです、私は実装する方法を知っているwouldntのそれは私がそれが可能であることを知っている場合を除いて私は試みたくない –

+0

私が意味をなさないならば教えてください –

答えて

1

バディ〜

あなたの最良の選択は、バックグラウンドで実行されている別のスレッドにあなたのオフロードの操作を助けるIntentServiceです。

LocationProviderから固定位置と最新位置の間の距離を絶え間なく得ることができます。その後、継続的に結果をアクティビティにLocalBroadcastManagerを通して送信し、メイン(UI)スレッドでUIを更新することができます。

参考:https://developer.android.com/training/run-background-service/index.html

関連する問題