だから私は自分の携帯電話の単純な緯度経度を試しています。ファームウェア レベル 2.3.6 の自分の電話を使用してテストしています。
これはメインコードです:
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
public class MainActivity extends FragmentActivity {
private LocationManager locationManager = null;
private LocationListener locationListener = null;
// private LocationListener onLocationChange=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, locationListener);
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
System.out.println("I got here");
}
public class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
/*
* System.out.println("This happened"); String message =
* "Longitude:" + loc.getLongitude() + " Latitude: " +
* loc.getLongitude(); Toast.makeText( getBaseContext(),
* "Location changed: Lat: " + loc.getLatitude() + " Lng: " +
* loc.getLongitude(), Toast.LENGTH_SHORT).show();
*/
System.out.println("IN ON LO
CATION CHANGE, lat="
+ loc.getLatitude() + ", lon=" + loc.getLongitude());
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
}
}
これがマニフェストです
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cloud.pushpin"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.cloud.pushpin.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyArmkmqy3i-wNsVH0f8RH15OsaR4lv4Sp8" />
</application>
<permission
android:name="com.cloud.pushpin.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.cloud.pushpin.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
</manifest>
基本的に私が見ているのは、アプリを起動しても何も起こらないということです。電話を振ると、「ここに着きました」というメッセージが何度も表示されますが、緯度と経度が表示されることはありません。コールバックが発生しない理由がわかりません。他のアクセス許可は、後で Google マップ API を実装するときに使用します。GPS は携帯電話だけでなく、モバイル データでも有効です。