java gps_java-使用GPS位置

该博客探讨了如何在Java应用程序中使用GPS获取用户位置,同时解决了因GPS在后台连续运行导致的大量请求问题。作者提到,他们希望通过一次性获取GPS坐标来减少与Parse的位置更新,以避免过度使用资源。博客中提供了部分代码示例,展示了如何实现位置监听器并尝试使用`requestSingleUpdate`方法来仅获取一次定位。
摘要由CSDN通过智能技术生成

活动启动后,GPS将启用并捕获用户的纬度,经度并将其报告以解析为Geopoint.问题是GPS连续在后台运行并连续向Parse位置报告.我只希望GPS一次获取位置信息,然后立即停止,因为我自己注意到我一天与Parse达成了大约2万个请求,我认为这是因为它在后台连续运行.

以下是活动代码:

public class MoodActivity extends Activity {

private FeedbackDialog feedBack;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_mood);

feedBack = new FeedbackDialog(this, "");

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

LocationListener mlocListener = new MyLocationListener();

mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);

final TextView teating = (TextView) this.findViewById(R.id.tdinning);

teating.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MoodActivity.this.startActivity(new Intent(MoodActivity.this, CasualEventsActivity.class));

}

});

final ImageView ieating = (ImageView) this.findViewById(R.id.idinning);

ieating.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MoodActivity.this.startActivity(new Intent(MoodActivity.this, CasualEventsActivity.class));

}

});

final TextView tdrinks = (TextView) this.findViewById(R.id.tcasual);

tdrinks.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MoodActivity.this.startActivity(new Intent(MoodActivity.this, CasualEventsActivity.class));

}

});

final ImageView idrinks = (ImageView) this.findViewById(R.id.icasual);

idrinks.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MoodActivity.this.startActivity(new Intent(MoodActivity.this, CasualEventsActivity.class));

}

});

final TextView tshows = (TextView) this.findViewById(R.id.tshows);

tshows.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MoodActivity.this.startActivity(new Intent(MoodActivity.this, EntertainmentEventsActivity.class));

}

});

final ImageView ishows = (ImageView) this.findViewById(R.id.ishows);

ishows.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MoodActivity.this.startActivity(new Intent(MoodActivity.this, EntertainmentEventsActivity.class));

}

});

final TextView tarts = (TextView) this.findViewById(R.id.tculture);

tarts.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MoodActivity.this.startActivity(new Intent(MoodActivity.this, CultureEventsActivity.class));

}

});

final ImageView iarts = (ImageView) this.findViewById(R.id.iculture);

iarts.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MoodActivity.this.startActivity(new Intent(MoodActivity.this, CultureEventsActivity.class));

}

});

final Button viewall = (Button) this.findViewById(R.id.brandom);

viewall.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MoodActivity.this.startActivity(new Intent(MoodActivity.this, CasualEventsActivity.class));

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main_activity_actions, menu);

getActionBar().setDisplayShowTitleEnabled(false);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle presses on the action bar items

switch (item.getItemId()) {

case R.id.pageExperience:

openPageExperience();

return true;

case R.id.pageMessaging:

openPageMessage();

return true;

case R.id.pageEventsBooking:

openPageBook();

return true;

case R.id.pageProfile:

openPageProfile();

return true;

case R.id.pageReport:

openPageReport();

return true;

case R.id.pageAbout:

openPageAbout();

return true;

case R.id.pageLogout:

openPageLogout();

return true;

default:

return super.onOptionsItemSelected(item);

}

}

private void openPageLogout() {

// TODO Auto-generated method stub

//Now call logout

ParseUser.logOut();

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);

startActivity(intent);

}

private void openPageAbout() {

// TODO Auto-generated method stub

}

private void openPageReport() {

// TODO Auto-generated method stub

FeedbackSettings feedbackSettings = new FeedbackSettings();

//SUBMIT-CANCEL BUTTONS

feedbackSettings.setCancelButtonText("No");

feedbackSettings.setSendButtonText("Send");

//DIALOG TEXT

feedbackSettings.setText("Hey, would you like to give us some feedback so that we can improve your experience?");

feedbackSettings.setYourComments("Type your question here...");

feedbackSettings.setTitle("Feedback Dialog Title");

//TOAST MESSAGE

feedbackSettings.setToast("Thank you so much!");

feedbackSettings.setToastDuration(Toast.LENGTH_SHORT); // Default

feedbackSettings.setToastDuration(Toast.LENGTH_LONG);

//RADIO BUTTONS

feedbackSettings.setRadioButtons(false); // Disables radio buttons

feedbackSettings.setBugLabel("Bug");

feedbackSettings.setIdeaLabel("Idea");

feedbackSettings.setQuestionLabel("Question");

//RADIO BUTTONS ORIENTATION AND GRAVITY

feedbackSettings.setOrientation(LinearLayout.HORIZONTAL); // Default

feedbackSettings.setOrientation(LinearLayout.VERTICAL);

feedbackSettings.setGravity(Gravity.RIGHT); // Default

feedbackSettings.setGravity(Gravity.LEFT);

feedbackSettings.setGravity(Gravity.CENTER);

//SET DIALOG MODAL

feedbackSettings.setModal(true); //Default is false

//DEVELOPER REPLIES

feedbackSettings.setReplyTitle("Message from the Developer");

feedbackSettings.setReplyCloseButtonText("Close");

feedbackSettings.setReplyRateButtonText("RATE!");

//DEVELOPER CUSTOM MESSAGE (NOT SEEN BY THE END USER)

feedbackSettings.setDeveloperMessage("This is a custom message that will only be seen by the developer!");

feedBack.show();

}

private void openPageProfile() {

// TODO Auto-generated method stub

Intent intent = new Intent(this, profileDetailsActivity.class);

startActivity(intent);

}

private void openPageBook() {

// TODO Auto-generated method stub

}

private void openPageMessage() {

// TODO Auto-generated method stub

}

private void openPageExperience() {

// TODO Auto-generated method stub

Intent intent = new Intent(this, MoodActivity.class);

startActivity(intent);

}

public class MyLocationListener implements LocationListener {

@Override

public void onLocationChanged(Location loc) {

// TODO Auto-generated method stub

double lati = loc.getLatitude();

double longi = loc.getLongitude();

ParseUser currentUser = ParseUser.getCurrentUser();

currentUser.saveInBackground();

ParseGeoPoint point = new ParseGeoPoint(lati, longi);

currentUser.put("location", point);

currentUser.saveInBackground(new SaveCallback() {

@Override

public void done(ParseException e) {

setProgressBarIndeterminateVisibility(false);

if (e == null) {

// Success!

} else {

}

}

});

}

@Override

public void onProviderDisabled(String provider) {

// TODO Auto-generated method stub

Toast.makeText(getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT).show();

}

@Override

public void onProviderEnabled(String provider) {

// TODO Auto-generated method stub

Toast.makeText(getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();

}

@Override

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

// TODO Auto-generated method stub

}

}

}

如果您需要任何澄清,请告诉我.

提前致谢.

更新资料

?我尝试使用单一更新来代替,但似乎不起作用.

在onCreate下

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

LocationListener mlocListener = new MyLocationListener();

mlocManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, mlocListener, Looper.myLooper());

public class MyLocationListener implements LocationListener {

@Override

public void onLocationChanged(Location loc) {

// TODO Auto-generated method stub

double lati = loc.getLatitude();

double longi = loc.getLongitude();

ParseUser currentUser = ParseUser.getCurrentUser();

currentUser.saveInBackground();

ParseGeoPoint point = new ParseGeoPoint(lati, longi);

currentUser.put("location", point);

currentUser.saveInBackground(new SaveCallback() {

@Override

public void done(ParseException e) {

setProgressBarIndeterminateVisibility(false);

if (e == null) {

// Success!

} else {

}

}

});

}

@Override

public void onProviderDisabled(String provider) {

// TODO Auto-generated method stub

Toast.makeText(getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT).show();

}

@Override

public void onProviderEnabled(String provider) {

// TODO Auto-generated method stub

Toast.makeText(getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();

}

@Override

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

// TODO Auto-generated method stub

}

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值