简体   繁体   English

android GPS程序没有错误,但没有运行,并且“不幸的是,应用程序停止工作”消息在模拟器上

[英]android GPS program no error but not running and 'unfortunately application stopped working'message coming on emulator

Hii i am trying to make an android program for gps detection .No error is coming But i am facing the message "Unfortunately the applicaton has stopped " and nothing is happening . 嗨,我正在尝试制作一个用于gps检测的android程序。没有错误来了,但我正面临一条消息“不幸的是,应用程序已停止”,并且什么也没有发生。 Please kindly help me out 请帮我

My code for Gpstracker.java 我的Gpstracker.java代码

package com.example.gpstracking;

import android.app.AlertDialog;
import android.app.Service;
import android.content. Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;  
import android.util.Log;

public class GpsTracker extends Service implements LocationListener {

private final Context mContext;

// flag for GPS status
boolean isGPSEnabled = false;

// flag for network status
boolean isNetworkEnabled = false;

// flag for GPS status
boolean canGetLocation = false;

Location location; // location
double latitude; // latitude
double longitude; // longitude

// The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters

// The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute

// Declaring a Location Manager
protected LocationManager locationManager;

public GpsTracker(Context context) {
    this.mContext = context;
    getLocation();
}

public Location getLocation() {
    try {
        locationManager = (LocationManager) mContext
                .getSystemService(LOCATION_SERVICE);

        // getting GPS status
        isGPSEnabled = locationManager
                .isProviderEnabled(LocationManager.GPS_PROVIDER);

        // getting network status
        isNetworkEnabled = locationManager
                .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        if (!isGPSEnabled && !isNetworkEnabled) {
            // no network provider is enabled
        } else {
            this.canGetLocation = true;
            // First get location from Network Provider
            if (isNetworkEnabled) {
                locationManager.requestLocationUpdates(
                        LocationManager.NETWORK_PROVIDER,
                        MIN_TIME_BW_UPDATES,
                        MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                Log.d("Network", "Network");
                if (locationManager != null) {
                    location = locationManager
                            .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    if (location != null) {
                        latitude = location.getLatitude();
                        longitude = location.getLongitude();
                    }
                }
            }
            // if GPS Enabled get lat/long using GPS Services
            if (isGPSEnabled) {
                if (location == null) {
                    locationManager.requestLocationUpdates(
                            LocationManager.GPS_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    Log.d("GPS Enabled", "GPS Enabled");
                    if (locationManager != null) {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

    return location;
}

/**
 * Stop using GPS listener
 * Calling this function will stop using GPS in your app
 * */
public void stopUsingGPS(){
    if(locationManager != null){
        locationManager.removeUpdates(GpsTracker.this);
    }
}

/**
 * Function to get latitude
 * */
public double getLatitude(){
    if(location != null){
        latitude = location.getLatitude();
    }

    // return latitude
    return latitude;
}

/**
 * Function to get longitude
 * */
public double getLongitude(){
    if(location != null){
        longitude = location.getLongitude();
    }

    // return longitude
    return longitude;
}

/**
 * Function to check GPS/wifi enabled
 * @return boolean
 * */
public boolean canGetLocation() {
    return this.canGetLocation;
}

/**
 * Function to show settings alert dialog
 * On pressing Settings button will lauch Settings Options
 * */
public void showSettingsAlert(){
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

    // Setting Dialog Title
    alertDialog.setTitle("GPS is settings");

    // Setting Dialog Message
    alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");

    // On pressing Settings button
    alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int which) {
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            mContext.startActivity(intent);
        }
    });

    // on pressing cancel button
    alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
        }
    });

    // Showing Alert Message
    alertDialog.show();
}

@Override
public void onLocationChanged(Location location) {
}

@Override
public void onProviderDisabled(String provider) {
}

@Override
public void onProviderEnabled(String provider) {
}

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

@Override
public IBinder onBind(Intent arg0) {
    return null;
}


}

Code for AndroidGPSTrackingActivity.java which is in the same package 同一包中的AndroidGPSTrackingActivity.java代码

package com.example.gpstracking;

import android.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class AndroidGPSTrackingActivity extends Activity {

 Button btnShowLocation;

// GPSTracker class
GpsTracker gps;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_item);

    btnShowLocation = (Button) findViewById(R.id.button1);

    // show location button click event
    btnShowLocation.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // create class object
            gps = new GpsTracker(AndroidGPSTrackingActivity.this);

            // check if GPS enabled
            if(gps.canGetLocation()){

                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();
            }else{
                // can't get location
                // GPS or Network is not enabled
                // Ask user to enable GPS/network in settings
                gps.showSettingsAlert();
            }

        }
    });
}


}

GPSTrackermanifest.xml file is GPSTrackermanifest.xml文件为

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.gpstracking"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".AndroidGPSTrackingActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

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

</manifest>

There are too many errors in your code! 您的代码中有太多错误!

1)You use a service GPSTracker which is not declared in manifest file 2)start the service 3)You have to register location listeneners 4)You have to use onLocationChanged to get new locations 5) Use onStatusChanged and onLocationChanged to get the gps status 1)您使用清单文件中未声明的GPSTracker服务2)启动服务3)您必须注册位置侦听器4)您必须使用onLocationChanged来获取新位置5)使用onStatusChanged和onLocationChanged来获取gps状态

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 GPS程序代码未显示任何错误,但模拟器上出现“不幸的是应用程序停止”消息。 请帮帮我 - .GPS program code shows no error but 'unfortunately application stopped ' message coming on emulator . Please help me out Android 模拟器 - 错误消息“不幸的是浏览器停止工作” - Android Emulator - the error message 'Unfortunately browser stopped working' 不幸的是,应用程序已在android模拟器中停止 - Unfortunately Application stopped in android emulator 不幸的是,Android仿真器显示消息,“应用程序名称”已停止 - android emulator shows message unfortunately, “application name” has stopped 错误消息“不幸的是,Smartface仿真器已停止”始终在Android设备上显示 - Error message “Unfortunately Smartface emulator stopped” is always shown on android device android模拟器抛出错误消息不幸的是,Helloworld已停止 - android emulator throwing error message Unfortunately, Helloworld has stopped Android模拟器中的“不幸的是,MainScreenActivity已停止”错误消息 - “Unfortunately, MainScreenActivity has stopped” ERROR message in Android Emulator 错误:不幸的是 <application name> 已在android模拟器中停止 - error: unfortunately <application name> has stopped in android emulator Android Emulator错误-不幸的是,应用程序已停止工作 - Android Emulator error- Unfortunately app has stopped working 不幸停止工作 android 应用程序 - Unfortunately Stopped Working android application
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM