2013-06-05 148 views
-1

我是Android新手,遇到了基本GPS信息显示程序的困难。该程序意外停止。如果您有任何建议或意见,我将不胜感激。GPS Android程序意外停止

我使用Android开发工具在Eclipse中为Android 2.3.3编码。

我看到了什么的代码相关的部分如下,但是,为了您的方便,该项目在这里存档:

http://www.filedropper.com/showdownload.php/2013-06-05t1434gps1

代码后续的章节:

Main.java :

package com.example.gps_1; 

import android.app.Activity; 
import android.content.Intent; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.location.LocationProvider; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 
import android.widget.Toast; 

public class Main extends Activity implements LocationListener { 
    /* This class implements LocationListener, which listens for both changes in 
    * the location of the device and changes in the status 
    * of the GPS system. 
    * */ 

    static final String tag = "Main"; // for Log 

    TextView txtInfo; 
    LocationManager lm; 
    StringBuilder sb; 
    int noOfFixes = 0; 

    /** called when the activity is first created */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     /* Have TextView display the GPS data. 
     * */ 
     txtInfo = (TextView) findViewById(R.id.textInfo); 

     /* The location manager is allows access to location and GPS status 
     * services. 
     * */ 
     lm = (LocationManager) getSystemService(LOCATION_SERVICE); 
    } 

    @Override 
    protected void onResume() { 
     /* onResume is called after onStart even if the program has not been paused. 
     * 
     * Add location listener and request updates every 1000 ms or 10 m. 
     */ 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10f, this); 
     super.onResume(); 
    } 

    @Override 
    protected void onPause() { 
     /* GPS has non-negligible battery consumption.*/ 
     lm.removeUpdates(this); 
     super.onPause(); 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     Log.v(tag, "location changed"); 

     sb = new StringBuilder(512); 

     noOfFixes++; 

     /* Display some of the information in the TextView. */ 

     sb.append("number of fixes: "); 
     sb.append(noOfFixes); 
     sb.append('\n'); 
     sb.append('\n'); 

     sb.append("longitude: "); 
     sb.append(location.getLongitude()); 
     sb.append('\n'); 

     sb.append("latitude: "); 
     sb.append(location.getLatitude()); 
     sb.append('\n'); 

     sb.append("altitiude: "); 
     sb.append(location.getAltitude()); 
     sb.append('\n'); 

     sb.append("accuracy: "); 
     sb.append(location.getAccuracy()); 
     sb.append('\n'); 

     sb.append("timestamp: "); 
     sb.append(location.getTime()); 
     sb.append('\n'); 

     txtInfo.setText(sb.toString()); 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     /* this is called if/when the GPS is disabled in settings */ 
     Log.v(tag, "disabled"); 

     /* bring up the GPS settings */ 
     Intent intent = new Intent(
       android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivity(intent); 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     Log.v(tag, "enabled"); 
     Toast.makeText(this, "GPS enabled", Toast.LENGTH_SHORT).show(); 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     /* This is called when the GPS status alters */ 
     switch (status) { 
     case LocationProvider.OUT_OF_SERVICE: 
      Log.v(tag, "status changed: out of service"); 
      Toast.makeText(this, "status changed: out of service", 
        Toast.LENGTH_SHORT).show(); 
      break; 
     case LocationProvider.TEMPORARILY_UNAVAILABLE: 
      Log.v(tag, "status changed: temporarily unavailable"); 
      Toast.makeText(this, "status changed: temporarily unavailable", 
        Toast.LENGTH_SHORT).show(); 
      break; 
     case LocationProvider.AVAILABLE: 
      Log.v(tag, "status changed: available"); 
      Toast.makeText(this, "status changed: available", 
        Toast.LENGTH_SHORT).show(); 
      break; 
     } 
    } 

    @Override 
    protected void onStop() { 
     /* upgrade: save the state */ 
     finish(); 
     super.onStop(); 
    } 
} 

的main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".Main" > 

    <TextView 
     android:id="@+id/textInfo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 

</RelativeLayout> 
+3

把你的logcat错误在这里 –

回答

1

你添加的权限清单文件

+1

请在评论中提出问题,澄清问题。不要试图事先猜出答案。 –

+0

我认为他没有足够的代表点...但任何如何它的很好的答案... –

+0

@Anshul +1老兄,但一旦你被允许评论不要写这种类型的答复作为答案... –

0

添加粗位置的权限也..因为精确的位置信息权限,只有当你的程序获取GPS位置,如果它将从您必须添加粗的网络位置位置权限也