按钮按下时,Android proximityalert应用程序崩溃

时间:2014-02-26 07:48:53

标签: java android crash gps proximity

我正在尝试编写一个简单的应用程序,该应用程序将用户的当前位置,并在他们稍后到达此位置时通知他们。在我的代码中,我设置了它,以便在应用程序启动时开始请求位置更新。然后,当按下按钮时,它将获取最后一个已知位置并在其周围创建一个接近警报。我的问题是,当我按下模拟器和真实手机上的按钮时,它很快崩溃,我似乎无法找到原因。有一个无限循环我有些失踪吗?如果有办法从我的手机上看到错误消息也很有帮助。

这是我的代码:

MainActivity.java

package com.YdidApplications.shotgun;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.Toast;

public class MainActivity extends Activity implements LocationListener
{
    private ImageButton flagButton;
    LocationManager lm;
    double lat=0,long1=0;    //Defining Latitude & Longitude
    float radius=5;                         //Defining Radius
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  
        lm=(LocationManager) getSystemService(LOCATION_SERVICE);
        lm.requestLocationUpdates(lm.GPS_PROVIDER, 
                10000, //Update every 10 sec
                10, (LocationListener) this);
        flagButton = (ImageButton) findViewById(R.id.FLAG);
        onFlagPress();
    }
    public void onFlagPress()
    {
        flagButton.setOnClickListener(new OnClickListener() {  
             @Override  
             public void onClick(View v) {  
                 location();
             }  
        });  
    }
    public void location()
    {

        lm=(LocationManager) getSystemService(LOCATION_SERVICE);
        lm.getLastKnownLocation(LOCATION_SERVICE);
        Intent i= new Intent("com.adnan.proximityalert");           //Custom Action
        PendingIntent pi = PendingIntent.getBroadcast(getApplicationContext(), -1, i, 0);
        lm.addProximityAlert(lat, long1, radius, -1, pi);
    }
    @Override
    public void onLocationChanged(Location location) {
        lat= location.getLatitude();
        long1 = location.getLongitude();
        Toast.makeText(null, lat+", "+long1, 0);
    }
    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

}

ProximityReciever.java

package ProximityReciever;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.location.LocationManager;
import android.widget.Toast;

/*This is the Reciever for the Brodcast sent, here our app will be notified if the User is 
* in the region specified by our proximity alert.You will have to register the reciever 
* with the same Intent you broadcasted in the previous Java file
* 
 * @Author: Adnan A M 
 */


public class ProximityReceiver extends BroadcastReceiver {

 @Override
 public void onReceive(Context arg0, Intent arg1) {
  // TODO Auto-generated method stub
  // The reciever gets the Context & the Intent that fired the broadcast as arg0 & agr1 

  String k=LocationManager.KEY_PROXIMITY_ENTERING;
 // Key for determining whether user is leaving or entering 

  boolean state=arg1.getBooleanExtra(k, false);
  //Gives whether the user is entering or leaving in boolean form

  if(state){
   // Call the Notification Service or anything else that you would like to do here
   Toast.makeText(arg0, "Welcome to my Area", 600).show();
  }else{
   //Other custom Notification 
   Toast.makeText(arg0, "Thank you for visiting my Area,come back again !!", 600).show();

  }

}


}

任何建议都将不胜感激。

谢谢, 洛根

0 个答案:

没有答案