我正在嘗試創建一個只顯示屏幕座標的應用程序。清單文件中添加了以下權限。在android中獲取位置
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
以下是MainActivity.java
import com.example.location.R;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
import android.provider.Settings;
public class MainActivity extends Activity {
double latitude;
double longitude;
TextView lat, longi, loc, status;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lat = (TextView)findViewById(R.id.latitude);
longi = (TextView)findViewById(R.id.longitude);
status = (TextView)findViewById(R.id.status);
loc = (TextView)findViewById(R.id.location);
ContentResolver contentResolver = getBaseContext().getContentResolver();
boolean gpsStatus = Settings.Secure.isLocationProviderEnabled(contentResolver, LocationManager.GPS_PROVIDER);
if(gpsStatus){
status.setText("GPS_PROVIDER is enabled.");
// This is to check if GPS_PROVIDER is enabled or not.
// This is working.
}
}
@Override
protected void onResume(){
super.onResume();
loc.setText("Entered Resume method"); //This works as well.
final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
latitude = location.getLatitude();
longitude = location.getLongitude();
String str_lat = String.valueOf(latitude);
String str_longi = String.valueOf(longitude);
lat.setText(str_lat);
longi.setText(str_longi);
loc.setText((CharSequence) location);
}
@Override
public void onStatusChanged(String provider, int status,Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
};
final LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
//Location Location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//double altitude = Location.getAltitude();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
}
}
代碼的應用程序不列入的setText的緯度和經度的文本,當在模擬器中運行,我DONOT看到任何錯誤。我甚至沒有得到0.0,0.0的經度和緯度。
雖然運行在手機應用程序,幾秒鐘後,應用程序與對話框關閉「不幸的是,應用程序已停止」
以下是在logcat中的錯誤消息。
11-04 23:35:48.250: E/AndroidRuntime(1224): FATAL EXCEPTION: main
11-04 23:35:48.250: E/AndroidRuntime(1224): Process: com.example.location, PID: 1224
11-04 23:35:48.250: E/AndroidRuntime(1224): java.lang.ClassCastException: android.location.Location cannot be cast to java.lang.CharSequence
11-04 23:35:48.250: E/AndroidRuntime(1224): at com.example.location.MainActivity$1.onLocationChanged(MainActivity.java:65)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:279)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:208)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:224)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.os.Handler.dispatchMessage(Handler.java:102)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.os.Looper.loop(Looper.java:136)
11-04 23:35:48.250: E/AndroidRuntime(1224): at android.app.ActivityThread.main(ActivityThread.java:5017)
11-04 23:35:48.250: E/AndroidRuntime(1224): at java.lang.reflect.Method.invokeNative(Native Method)
11-04 23:35:48.250: E/AndroidRuntime(1224): at java.lang.reflect.Method.invoke(Method.java:515)
11-04 23:35:48.250: E/AndroidRuntime(1224): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
11-04 23:35:48.250: E/AndroidRuntime(1224): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
11-04 23:35:48.250: E/AndroidRuntime(1224): at dalvik.system.NativeStart.main(Native Method)
我是新來的android編程,所以kindle糾正我,如果我正在做任何愚蠢的錯誤,並幫助我學習。任何幫助調試這是非常感謝。
這意味着您的位置對象爲空 – 2014-11-05 04:31:02
請將您在Logcat中看到的錯誤發佈到「不幸,應用程序已停止」時出現。 http://stackoverflow.com/questions/2279647/how-to-emulate-gps-location-in-the-android-emulator是一個很好的指針,通過模擬器獲取位置值。 – 2014-11-05 04:33:02
@VnyKumar:這真的有幫助,我試圖顯示作爲一個分析序列的整個位置的內容。那是錯誤。 – user3543477 2014-11-05 04:44:14