2012-03-29 3 views
0

UPDATE 2にはGPSの位置:私は外にいたとGPS_PROVIDERで信号を得た後に問題がギャラクシータブ - アプリケーション取得のネットワークまたは受動的なプロバイダ

を解決しているが、今私は場所の修正を得るためにはもう問題はない持っていますNETWORK_PROVIDERを使用しています....

Googleマップアプリはなぜ私がやったのか、アプリがなかったのかまだ分かりませんが、銀河のタブ)と私は一種の幸せです。)


更新:スレッドタイトルchang投稿の下部にある編集を参照してください。

私はちょうど銀河タブ上でGPSロケーションを取得するため、このチュートリアル(http://www.firstdroid.com/2010/04/29/android-development-using-gps-to-get-current-location-2/)を試してみましたが、私は任意の場所を得ることはありません....

私はすでに別のプロバイダを使用しようとしたが、これにはありません助けてください(私はGPS_PROVIDER、NETWORK_PROVIDER、PASSIVE_PROVIDERを試しました)。

奇妙なことは、私は場所を取得する公式のGoogleマップのアプリです。 :以下のように\のAndroidManifest.xmlで

の権限が設定されている:私のアプリケーションは、何の場所を取得しない理由

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

誰もが知っているのですか?

編集:

GPSプロバイダー私は外出時に修正を受けます。私はなぜNETWORK_PROVIDERまたはPASSIVE_PROVIDERを持っていないのかわかりません。

GPSが利用できない場合、プロバイダはGoogleマップアプリを使用しますか?

編集2:

コード(それはいくつかのマイナーな変更を上記のチュートリアルからです):

package Firstdroid.Tutorial.Gps; 

import android.app.Activity; 
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.widget.Toast; 

public class UseGps extends Activity { 

    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) 

    { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     Toast.makeText(getApplicationContext(), "Application started", Toast.LENGTH_SHORT).show(); 

     /* Use the LocationManager class to obtain GPS locations */ 

     LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     LocationListener mlocListener = new MyLocationListener(); 

     // here I choose the location provider: 
     mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener); // <--- 

    } 

    /* Class My Location Listener */ 

    public class MyLocationListener implements LocationListener { 

     @Override 
     public void onLocationChanged(Location loc) { 

      loc.getLatitude(); 

      loc.getLongitude(); 

      String Text = "My current location is: " + 

      "Latitude = " + loc.getLatitude() + 

      "Longitude = " + loc.getLongitude() + " (PROVIDER: " + loc.getProvider() + ")"; 

      Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT).show(); 

     } 

     @Override 
     public void onProviderDisabled(String provider) { 

      Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT).show(); 

     } 

     @Override 
     public void onProviderEnabled(String provider) { 

      Toast.makeText(getApplicationContext(), 

      "Gps Enabled", Toast.LENGTH_SHORT).show(); 

     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 

     } 

    }/* End of Class MyLocationListener */ 

}/* End of UseGps Activity */ 
+0

あなたのロケーションリスナーなどを設定する場所にコードを投稿できますか?また、あなたが罰金を要求する場合、あなたは粗い要求をする必要はありません。ネットワークとGPSプロバイダーの両方をうまく処理します。 – Kevin

+0

こんにちは、私はあなたのコメントを見ました。 GPS_PROVIDERは機能しますが、NETWORK_PROVIDERまたはPASSIVE_PROVIDERは機能しません。 ああ、最初の投稿にコードを追加します。 – LittleJohn

答えて

0

があなたの銀河タブは、3G無線機を持っていますし、ネットワーク上で接続されていますか?そうでなければ、network_providerの場所は決して得られません。

また、loc.getLatitudeとloc.getLongitudeの2つの追加の呼び出しは一番上には必要ありませんが、これらを使用して変数を設定し、変数を出力メッセージに使用することをお勧めします。これでGPSData.getLatitude()などを呼び出すだけで、必要な値を取得できます。

public class GPSData { 
    private static double latitude; 
    /** 
    * @return the latitude 
    */ 
    public static double getLatitude() { 
     return latitude; 
    } 

    /** 
    * @param latitude the latitude to set 
    */ 
    public static void setLatitude(double l) { 
     latitude = l; 
    } 

    private static double longitude; 
    /** 
    * @return the longitude 
    */ 
    public static double getLongitude() { 
     return longitude; 
    } 

    /** 
    * @param d the longitude to set 
    */ 
    public static void setLongitude(double d) { 
     longitude = d; 
    } 

    private static float accuracy; 
    /** 
    * @return the accuracy 
    */ 
    public static float getAccuracy() { 
     return accuracy; 
    } 

    /** 
    * @param f the accuracy to set 
    */ 
    public static void setAccuracy(float f) { 
     accuracy = f; 
    } 

    //Altitude is in feet 
    private static double altitude; 

    public static void setAltitude (double a) { 
     altitude = a; 
    } 

    public static double getAltitude() { 
     return altitude; 
    } 


    /** 
    * New location listener to be instantiated for getting locational data 
    * 
    */ 
    public static class MyLocationListener implements LocationListener { 
     public void onLocationChanged(Location location) { 
      setAccuracy(location.getAccuracy()); 
      setLongitude(location.getLongitude()); 
      setLatitude(location.getLatitude()); 
      //Altitude is in feet 
      setAltitude(location.getAltitude()); 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 

     } 

     @Override 
     public void onProviderEnabled(String provider) { 

     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 

     } 
    } 
} 
+0

ああ、SIMカードはまったくありません。 ロケーションが決定できる唯一のものは、私が思うに接続している無線LANです。 私は、これはGoogleマップのアプリは、場所の修正を取得しない場合は、私にはそれほど驚くことはないと言った:\ – LittleJohn

+0

それはなぜでしょう。 =)できるだけ私の答えを受け入れてください。そうすれば解決されたとマークすることができます。 – Kevin

+0

ハイテクSRY私はあまりにも早く私のポストを入力し、送信accidendtlyに来て、私はいくつかのテキストを追加 )... 解くように、私はスレッドにタグを付けるだろうが、私はGoogleでの位置を取得するために私のためにそれだけで解決していませんマップは私のアプリでも可能でなければならないのでしょうか? – LittleJohn

関連する問題