java-使用GPS位置

java-使用GPS位置,第1张

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

活动启动后,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           }          }}

解决方法:

当您调用LocationManager.requestLocationUpdates()时,系统将通过该调用中给定的LocationListener不断提供位置更新.

如果您只想获取一个位置更新,则有两种选择:

>使用LocationManager.requestSingleUpdate()
>使用LocationManager.requestLocationUpdates(),但在收到第一个更新后取消更新.

我将继续使用2,因为您已经有一些代码.您需要首先将变量mLocManager声明为类字段,而不是在onCreate()中本地声明它.然后,您需要在LocationListener中添加以下代码.

    public class MyLocationListener implements LocationListener {        @OverrIDe        public voID onLocationChanged(Location loc) {            double lati = loc.getLatitude();            double longi = loc.getLongitude();            mlocManager.remoteUpdates(this); // ADD THIS STATEMENT            // The rest of your code goes here ...        }   }
总结

以上是内存溢出为你收集整理的java-使用GPS位置全部内容,希望文章能够帮你解决java-使用GPS位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1088177.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存