相关疑难解决方法(0)

如何显示Google地图等启用位置对话框?

我使用最新版本的Google Play服务(7.0)并按照其指南中给出的步骤操作,并启用了如下所示的位置对话框,其中包含"从不"按钮.我的应用程序强制要求位置,所以我不想向用户显示永远不会,因为一旦用户点击"从不",我就无法再获取位置或请求位置.

谷歌地图只有是和没有按钮没有从不按钮,任何想法如何实现相同?

我的应用程序的图像 在此输入图像描述

谷歌地图的形象 在此输入图像描述

android google-play-services

124
推荐指数
7
解决办法
8万
查看次数

打开位置服务而不导航到设置页面

对于提示用户转到设置页面并启用位置服务并再次返回的传统方法,我注意到在一些最新的应用程序中执行相同操作的更简单方法.

参考下面的截图,它会提示一个对话框,用户只需点击一下鼠标,使定位服务,它在这些应用程序的工作原理.

我怎样才能实现同样的目标?

在此输入图像描述

android location

104
推荐指数
6
解决办法
7万
查看次数

如何在Android Marshmallow上的Google地图上显示当前位置?

我想谷歌地图显示用户的位置.我尝试了这段代码,但它在Android 6上无效.

private GoogleMap map;
LocationManager lm;
LocationListener ll;
Location l;

LatLng pos;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.start_layout);

    lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    ll = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            l = (Location) location;
        }

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

        @Override
        public void onProviderEnabled(String provider) {}

        @Override
        public void onProviderDisabled(String provider) {}
    };

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.nMap);
    mapFragment.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap googleMap) {
    map = …
Run Code Online (Sandbox Code Playgroud)

android google-maps google-maps-android-api-2

48
推荐指数
2
解决办法
10万
查看次数

如何使用FusedLocationProviderClient获取GoogleMap中的当前位置

我想定期(比如每2分钟)当前位置更新为这个我下面的官方文档,我写了这个代码,但它不会给当前的位置即使在我传递requestLocationUpdates LocationRequest对象指定每两分钟更新( ),这里是代码:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback,
    GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{

private FusedLocationProviderClient FusedLocationClient;
private GoogleApiClient mGoogleApiClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    if (mGoogleApiClient == null) {
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();
    }

 SupportMapFragment map = 
  getSupportFragmentManager().findFragmentById(R.id.map));

  map.getMapAsync(this);

  FusedLocationClient LocationServices.getFusedLocationProviderClient(this);
}


@Override
public void onConnected(Bundle bundle) {
    FusedLocationClient.getLastLocation()
            .addOnSuccessListener(this, new OnSuccessListener<Location>() {
                @Override
                public void onSuccess(Location location) {

                    if (location != null) {
                        Log.i("MainActivity ", "" + location.getLongitude()) 
                    }
                }
            });
FusedLocationClient = …
Run Code Online (Sandbox Code Playgroud)

java android google-maps-android-api-2 android-fusedlocation

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

开始解析片段中的结果

在我的应用程序中,如果用户没有打开位置,我会通过对话框提示,然后尝试通过覆盖活动结果返回该结果(可能不正确).

这是一个片段,所以不确定如何改变事物:

这就是我用startResolutionForResult调用它的对话框:

public void checkDeviceLocationIsOn()
        {
            System.out.println("Test running setting request" );
            LocationRequest locationRequest = LocationRequest.create();
            locationRequest.setPriority(LocationRequest.PRIORITY_LOW_POWER);
            LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
                    .addLocationRequest(locationRequest);
            builder.setAlwaysShow(true); //this is the key ingredient

            PendingResult<LocationSettingsResult> result =
                    LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());
            result.setResultCallback(new ResultCallback<LocationSettingsResult>() {
                @Override
                public void onResult(LocationSettingsResult result) {
                    final Status status = result.getStatus();
                    final LocationSettingsStates state = result.getLocationSettingsStates();
                    switch (status.getStatusCode()) {
                        case LocationSettingsStatusCodes.SUCCESS:
                            // All location settings are satisfied.
                            System.out.println("Test setting all fine starting location request" );
                            getLocation();
                            break;
                        case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                            // Location settings are …
Run Code Online (Sandbox Code Playgroud)

android android-fragments onactivityresult

12
推荐指数
3
解决办法
4879
查看次数

Google+登录在Android片段上无法正常使用

我正在使用谷歌+登录到我的应用程序,当我使用活动完成它的工作魅力,然后我将我的代码移动到一个片段,然后当我尝试登录到谷歌+它不工作我必须打开片段活动2次登录谷歌+任何人都可以告诉我,下面添加了片段的代码发生了什么

public class GooglePluseFragment extends Fragment implements
        ConnectionCallbacks, OnConnectionFailedListener {

private static final int RC_SIGN_IN = 0;

private static final String TAG = "MainActivity";

private static final int PROFILE_PIC_SIZE = 800;

private GoogleApiClient mGoogleApiClient;

private boolean mIntentInProgress;

private boolean mSignInClicked;

private ConnectionResult mConnectionResult;

private SignInButton btnSignIn;
private Button btnSignOut;

private Context mContext;
private Activity mActivity;



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mActivity = getActivity();
    mContext = getActivity().getApplicationContext();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View …
Run Code Online (Sandbox Code Playgroud)

android android-fragments google-plus android-fragmentactivity

11
推荐指数
1
解决办法
8471
查看次数

像Ola Cabs Android应用程序一样以编程方式打开GPS

我正在开发一个应用程序,需要集成GPS位置.我想以编程方式切换GPS.条件是:我不想将用户发送到"设置"面板以启用它.我想强有力地启用它或单个提示将起作用(类似于Ola Cabs Android应用程序).在这个网站上有很多问题,但每个人都在寻找像Ola Cabs app这样的类似功能.所以我已经启动了这个帖子,以便我们所有人都清楚.

gps android location-services

8
推荐指数
2
解决办法
1万
查看次数

为什么LocationSettingsResult startResolutionForResult没有调用onActivityResult?

我已经看到了这个Q&A LocationSettingsRequest对话框 - 跳过了onActivityResult().这不是同一个问题,因为一切都在Activity中完成.

使用的代码几乎是逐字逐句的,在Google Play服务示例中给出了.

我有一个活动,LocationActivity它连接到GoogleApiClient以获取用户的位置.连接后,我创建一个LocationSettingsRequest以确保打开位置设置.活动正在实施ResultCallback<LocationSettingsResult>.

ResultCallback<LocationSettingsResult>.onResult()被称为如果result.getStatus().getStatusCode() == LocationSettingsStatusCodes.RESOLUTION_REQUIREDstatus.startResolutionForResult(this, REQUEST_CHECK_SETTINGS)被称为并且所示的对话框.无论选择什么,问题onActivityResult()都不会被调用.

@Override
public void onConnected(Bundle connectionHint) {
    Log.i(TAG, "GoogleApiClient connected");
    LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
        .addLocationRequest(new LocationRequest().setPriority(LocationRequest.PRIORITY_LOW_POWER));

    PendingResult<LocationSettingsResult> result =
        LocationServices.SettingsApi.checkLocationSettings(googleApiClient, builder.build());

    result.setResultCallback(this);
}
Run Code Online (Sandbox Code Playgroud)

.

@Override
public void onResult(LocationSettingsResult result) {
    final Status status = result.getStatus();
    Log.d(TAG, "onResult() called with: " + "result = [" + status.getStatusMessage() + "]");
    switch (status.getStatusCode()) {
        case LocationSettingsStatusCodes.SUCCESS:
            getLocation(); …
Run Code Online (Sandbox Code Playgroud)

android google-play-services

8
推荐指数
2
解决办法
1万
查看次数

如何?侦听位置设置被打开(Android App)

所以我花了几个星期的时间在我的Android应用程序上工作,并研究实现我需要做的最好的方法,但仍然无法正确完成..任何/所有帮助都非常感谢,因为我是仍然掌握着一切......

任务:

(假设"位置"/ GPS设置当前已关闭),我需要让我的应用程序一直在监听"位置"设置是否打开..此时,只需启动一个活动.

思路:

这些是我认为可能有用的不同方式:

  • LocationListener使用"onProviderEnabled"

  • 使用"onGpsStatusChanged"和"GPS_EVENT_STARTED"的GpsStatusListener

  • GpsProvider需要卫星(以确定它是否启动),或以某种方式使用GpsProvider的"AVAILABLE"Constant/int

  • 使用"ACTION_SERVICE_INTENT"(和/或)"ACTION_INJECTED_SETTING_CHANGED"与"onGetEnabled"或"isEnabled"的SettingInjectorService

  • Settings.Secure使用"LOCATION_MODE"!="LOCATION_MODE_OFF"

  • ContentObserver/ContentResolver

  • 意图getAction(...)

  • 某种"if/else"

问题:

任何以下任何问题的建议或答案都非常感谢..

  • 以上哪些想法是完成任务的最佳方式?越简单越好,但最重要的是它需要一直监听,并在打开位置设置时立即响应.

  • 对于上述哪个观点效果最好,我将如何实现它?(例如,我需要一个BroadcastListener?还是一个服务?它将如何组合在一起?

我非常感谢你能给我的任何建议或帮助..我仍然掌握所有这一切,但有足够的信心去做,并渴望发布我的第一个应用程序..所以谢谢你,这意味着很多并将极大地帮助我.


编辑:

好的所以这就是我到目前为止所得到的...... 继承人
我的接收者:

MyReceiver.Java

public class MyReceiver extends BroadcastReceiver {

    private final static String TAG = "LocationProviderChanged";

    boolean isGpsEnabled;
    boolean isNetworkEnabled;



    public MyReceiver() {
    // EMPTY

    // MyReceiver Close Bracket
    }



    // START OF onReceive
    @Override
    public void onReceive(Context context, Intent intent) {


        // PRIMARY RECEIVER
        if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {

            Log.i(TAG, "Location Providers Changed");

            LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
            isGpsEnabled = …
Run Code Online (Sandbox Code Playgroud)

java gps android broadcastreceiver locationmanager

8
推荐指数
1
解决办法
7469
查看次数

FusedLocationProviderClient何时以及如何停止Looper?

我曾经使用过FusedLocationApi,直到我得知它已被弃用(参见下面的参考资料).实施起来很简单.正如文档所说,您需要将其与GoogleApiClient结合使用

LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient,
                        locationRequest, this);
Run Code Online (Sandbox Code Playgroud)

我最近更改为FusedLocationProviderClient(参见下面的参考资料)根据教程,我能够成功地使FusedLocationProviderClient工作

教程:https://github.com/codepath/android_guides/wiki/Retrieving-Location-with-LocationServices-API

// new Google API SDK v11 uses getFusedLocationProviderClient(this)
getFusedLocationProviderClient(this).requestLocationUpdates(mLocationRequest, new LocationCallback() {
      @Override
      public void onLocationResult(LocationResult locationResult) {
         // do work here
         onLocationChanged(locationResult.getLastLocation();
      }
    },
    Looper.myLooper());
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是Looper线程.即使应用程序在后台运行,Looper线程也会继续运行.我想在应用程序在后台时暂停位置更新,然后在应用程序位于前台时恢复位置更新.我怎样才能做到这一点?

参考文献:

  1. https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi
  2. https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient

multithreading android geolocation android-looper

8
推荐指数
1
解决办法
2万
查看次数

startIntentSenderForResult 已弃用 Android

代码片段:

private fun requestHint() {
    val hintRequest = HintRequest.Builder()
        .setPhoneNumberIdentifierSupported(true)
        .build()
    val credentialsClient = Credentials.getClient(this)
    val intent = credentialsClient.getHintPickerIntent(hintRequest)
    try {
        startIntentSenderForResult(
            intent.intentSender,
            CREDENTIAL_PICKER_REQUEST,
            null, 0, 0, 0
        )
    } catch (e: IntentSender.SendIntentException) {
        e.printStackTrace()
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图从文档中解决这个问题,但我不明白

如果有人知道如何解决请帮忙
谢谢

android android-intent android-activity

6
推荐指数
1
解决办法
6692
查看次数

当我调用startResolutionForResult时,onActivityResult()不在片段中执行

问题,当我打电话使用GoogleApiClient以编程方式启用gps片段...我的代码是..

 final Status status = result.getStatus();
                final LocationSettingsStates state = result.getLocationSettingsStates();
                switch (status.getStatusCode())
                {
                    case LocationSettingsStatusCodes.SUCCESS:
                        // All location settings are satisfied. The client can initialize location
                        // requests here.
                        getCurrentLocation();
                        break;
                    case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                        // Location settings are not satisfied. But could be fixed by showing the user
                        // a dialog.
                        try {
                            // Show the dialog by calling startResolutionForResult(),
                            // and check the result in onActivityResult().
                            status.startResolutionForResult(getActivity(), REQUEST_ID_GPS_PERMISSIONS);
                        } catch (IntentSender.SendIntentException e) {
                            // Ignore the error.
                        }
                        break; …
Run Code Online (Sandbox Code Playgroud)

gps android location onactivityresult

4
推荐指数
4
解决办法
3802
查看次数