相关疑难解决方法(0)

在Android上获取用户当前位置的最简单,最强大的方法是什么?

LocationManagerAndroid上的API似乎对于仅需要偶尔粗略估计用户位置的应用程序来说有点痛苦.

我正在处理的应用程序本身并不是一个位置应用程序,但它确实需要获取用户的位置才能显示附近的商家列表.它不需要担心用户是否在移动或类似的东西.

这是我想做的事情:

  1. 向用户显示附近位置的列表.
  2. 预加载用户的位置,以便在ActivityX中需要它时,它将可用.
  3. 我并不特别关心更新的准确性或频率.只要没有办法,抓住一个位置就足够了.也许如果我想要花哨,我会每隔几分钟更新一次位置,但这不是一个重要的优先事项.
  4. 只要有GPS或网络位置提供商,就可以使用任何设备.

看起来它应该不那么难,但在我看来,我必须启动两个不同的位置提供商(GPS和NETWORK)并管理每个生命周期.不仅如此,我还必须在多个活动中复制相同的代码以满足#2.我曾尝试过使用getBestProvider()过去将解决方案缩减为只使用一个位置提供商,但这似乎只能为您提供最好的"理论"提供商,而不是实际上会给您带来最佳结果的提供商.

有没有更简单的方法来实现这一目标?

android location geolocation latitude-longitude

788
推荐指数
12
解决办法
31万
查看次数

如何在新的 ActivityResult API (1.3.0-alpha05) 中获取权限请求?

因此,我尝试使用新的 registerForActivityResult() 方法获得许可,并使用 .launch() 按钮单击请求,但它似乎没有打开任何窗口来请求它。我总是在 registerForActivityResult() 中出错。

    // Permission to get photo from gallery, gets permission and produce boolean
private ActivityResultLauncher<String> mPermissionResult = registerForActivityResult(
        new ActivityResultContracts.RequestPermission(),
        new ActivityResultCallback<Boolean>() {
            @Override
            public void onActivityResult(Boolean result) {
                if(result) {
                    Log.e(TAG, "onActivityResult: PERMISSION GRANTED");
                } else {
                    Log.e(TAG, "onActivityResult: PERMISSION DENIED");
                }
            }
        });



        // Launch the permission window -- this is in onCreateView()
    floatingActionButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
         mPermissionResult.launch(Manifest.permission.ACCESS_BACKGROUND_LOCATION);

        }
    });
Run Code Online (Sandbox Code Playgroud)

这是我的日志:onActivityResult: PERMISSION DENIED

java android android-fragments android-permissions

7
推荐指数
1
解决办法
3865
查看次数

在Android中使用GPS获取当前位置

我现在正在一个项目中工作,我希望使用gps获取用户的当前位置.我已经阅读了很多教程并尝试编写代码.该代码在模拟器中运行良好.每次我使用DDMS发送latittude和经度时,模拟器都会检测到它.主要问题是它不适用于真实设备.虽然,我尝试的设备有互联网接入,GPS是开放的.我已将所需权限添加到清单文件中.

public class MainActivity extends Activity {

TextView lat;
TextView lon;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lat=(TextView)findViewById(R.id.textView2);
    lon=(TextView)findViewById(R.id.textView4);
    LocationManager lm=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
    LocationListener ll=new myLocationListener();
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0, ll);
}

@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, menu);
    return true;
}
   class myLocationListener implements LocationListener{

@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub
    if(location!=null){
        double pLat=location.getLatitude();
        double pLong=location.getLongitude();
        lat.setText(Double.toString(pLat));
        lon.setText(Double.toString(pLong));
    }
}

@Override …
Run Code Online (Sandbox Code Playgroud)

gps android

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