相关疑难解决方法(0)

Android找到GPS位置一次,显示加载对话框

我正在编写一个需要用户当前位置的应用程序(lastknownlocation不会非常有帮助),并显示从数据库中获取的所有最近"项目"的列表.

我发现最近的项目运行良好,但目前仅使用硬编码的纬度和经度位置,但现在是时候实现查找实际位置了.

任何人都可以提供一个示例,说明如何让应用程序在后台找到当前的好位置并让应用程序等待.当人们移动时,我只需要一次不更新的位置.我已经实现了一个位置监听器,但我知道获得GPS定位可能会很慢.我已经看到了使用上一个已知位置或实现位置监听器的其他示例,该位置监听器继续运行和更新,但是因为我的Activity需要位置坐标才能显示应用程序崩溃的任何内容.我需要在搜索时显示进度对话框.

如何让locationlistener在后台运行一次,然后在找到位置后删除位置更新.我需要应用程序的其余部分等到它有GPS位置或超时后说20-30秒.我想要一个ProgressDialog,以便用户知道某些事情正在发生,但它必须是旋转加载动画而不是百分比或任何东西.如果可能的话,我希望用户能够取消对话,如果他们厌倦了等待,那么他们可以通过键入郊区等来搜索.

我一直试图用线程做到这一点,但它变得比我觉得应该更复杂,但仍然无法工作.在iPhone上这更简单了吗?

任何人都可以提供一个很好的方法来做到这一点,我已经把我的头发扯了一个星期,这真的让我落后于应用程序完成日期的剩余时间.

总结一下,我想:
*找到当前坐标
*获取位置时显示进度对话框
*让应用程序能够等待成功的位置或在一段时间后放弃?
*如果成功:关闭进度对话框并使用坐标运行我的其他方法来查找附近的项目.
*如果获取位置失败:取消进度对话框并显示错误消息,并鼓励用户使用菜单转到"搜索活动".
*如果用户从菜单中选择地图视图,则使用这些坐标,以显示地图上的当前位置,并使用数据库中的坐标将引脚放在所有附近的项目上.

谢谢你们,我希望我能够很好地解释自己.如有任何问题,我会定期回来查看,因为我很想完成这部分.干杯


根据要求编辑代码

locationList活动文件

protected void onStart()
{
    super.onStart();

    // ....

    new LocationControl().execute(this);
}


private class LocationControl extends AsyncTask<Context, Void, Void>
{
    private final ProgressDialog dialog = new ProgressDialog(branchAtmList.this);

    protected void onPreExecute()
    {
        this.dialog.setMessage("Determining your location...");
        this.dialog.show();
    }

    protected Void doInBackground(Context... params)
    {
        LocationHelper location = new LocationHelper();

        location.getLocation(params[0], locationResult);

        return null;
    }

    protected void onPostExecute(final Void unused)
    {
        if(this.dialog.isShowing())
        {
            this.dialog.dismiss();
        }

        useLocation(); //does the …
Run Code Online (Sandbox Code Playgroud)

gps android progressdialog locationlistener

26
推荐指数
2
解决办法
4万
查看次数

标签 统计

android ×1

gps ×1

locationlistener ×1

progressdialog ×1