Articles of google api client

使用Google API的背景位置更新 – 融合位置提供程序不准确

我一直在使用GoogleApiClient进行基于区间和位移的更新,对背景位置更新进行测试。 在测试和分析几天后,我发现输出中的一些变化,我没想到。 使用setInterval和setFastestInterval进行基于区间的更新时,假设我将Interval设置为15分钟 ,将Fastest Interval设置为10分钟 ,90%的时间我在预期的间隔(10到15分钟)内获得更新。 但有时我注意到更新所需的时间比指定的Interval长得多,例如,差异大约是30分钟和60分钟。 关于为什么差异的任何想法? 使用setMinimumDisplacement进行基于距离的更新时,比如说我已经将Displacement设置为200米 ,我只能在200米及以上的固定点上进行更新(当旅行时它不会更新,即使它超过200米) 。 这是正常的吗? 我正在使用PendingIntenttypes的位置请求,以便在BroadcastReceiver接收位置更新,以便在后台进行位置更新。 fusedLocationProviderClient.requestLocationUpdates(locationRequest, pendingIntent); 测试时, 位置服务已开启 , 位置模式为HIGH_ACCURACY 。

检测或阻止用户是否使用虚假位置

如果用户伪造该位置,我将阻止用户使用我的应用。 所以我使用isFromMockProvider来检查位置是否是假的(按照这里 )。 但在某些情况下, isFromMockProvider()可能会为伪造位置返回false。 public void onLocationChanged(Location location) { textView.append(“long:”+location.getLatitude()+” – lat:”+location.getLongitude()+” – isMock :”+location.isFromMockProvider() + “\n”); } 我的情况是 :我使用假冒伪劣GPS定位到一个位置,然后我禁用假位置,并转到我的应用程序。 然后onLocationChanged使用isFromMockProvider() = false返回伪位置 录像机 : https : //www.youtube.com/watch?v = rWVvjOCaZiI(在此video中,我目前的位置是16.06,108.21,假位置是36.26,138.28。你可以在上一个video中看到位置是36.26, 138.28但isFromMockProvider = false) 在这种情况下,有没有办法检测用户是否使用假位置? 任何帮助或建议将非常感谢。 DEMO项目

使用GoogleApiClient + LocationServices不更新

我只是想做一个简单的“教程”应用程序来获取我的手机的位置(以便在以后的其他应用程序中学习如何使用它),但我只是没有到达任何地方。 我做了什么 Android Developer的教程:首先,我按照Android开发者网站(developer.android.com/training/location/receive-location-updates.html)中的教程进行操作。 就像那里所示,我使用了Location,LocationClient和LocationRequest,在onCreate中初始化它们(并设置它们)。 LocationClient在onStart和onStop上连接和断开连接。 我在连接后请求位置更新(在onConnected中)。 我在拨打电话之前validation了GooglePlayServices是否可用,而且我仍然没有在“onLocationChanged”中获得任何更新。 GoogleApiClient:我注意到不推荐使用LocationClient,而首选的是LocationServices(developer.android.com/reference/com/google/android/gms/location/LocationClient.html)。 如下所示: https : //developer.android.com/reference/com/google/android/gms/location/FusedLocationProviderApi.html ,我使用GoogleApiClient并将其设置为LocationServices(也是https://stackoverflow.com/a / 25013850/3802589 )。 那么我把它全部设置为使用它但仍然没有得到任何关于位置的更新。 onLocationChanged如果有响应则应该打印。 我还放了一个打印位置或“没有”的按钮。 备注 我检查了使用谷歌地图,看看我是否有一些东西,但它的工作正常。 项目 的build.gradle dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) compile ‘com.google.android.gms:play-services:5.0.77’ compile “com.android.support:support-v4:20.0.+” } 表现 … … … 码 public class MyActivity extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener { private GoogleApiClient mLocationClient; private […]

获取’E / TokenRequestor:您有与OAuth2相关的错误配置。 详细错误:INVALID_AUDIENCE’即使在提供准确的客户ID之后也是如此

我在我的应用中提供了GoogleSignIn选项。 这是我的代码: public class SignupActivity extends AppCompatActivity { private static final int RC_SIGN_IN = 1; GoogleApiClient mGoogleApiClient; FirebaseAuth mAuth; TextView appName; ProgressDialog signinProgressDialog; CoordinatorLayout coordinatorLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_signup); // Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // setSupportActionBar(toolbar); signinProgressDialog = new ProgressDialog(SignupActivity.this); coordinatorLayout = (CoordinatorLayout) findViewById(R.id.signupCoordinatorLayout); // Configure Google Sign In GoogleSignInOptions […]

java.net.UnknownHostException无法解析主机“accounts.google.com”:在bigquery中插入行时没有与主机名关联的地址

嗨,我正在研究我已集成BigQuery的Android应用程序。 我发现在BigQuery表中插入记录时有时会遇到很多exception。 我们不是这方面的专长,而是开始学习这项新技术。 如果你们可以帮助我,那将是很棒的。 java.net.UnknownHostException: Unable to resolve host “accounts.google.com”: No address associated with hostname at java.net.InetAddress.lookupHostByName(InetAddress.java:424) at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) at java.net.InetAddress.getAllByName(InetAddress.java:214) at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28) at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216) at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292) at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206) at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345) at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89) at com.android.okhttp.internal.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197) at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:254) at com.google.aacaca(NetHttpRequest.java:77) at com.google.aacrp(HttpRequest.java:972) at com.google.aaaaha(TokenRequest.java:307) at com.google.aabaabf(GoogleCredential.java:384) at com.google.aaaach(Credential.java:489) at com.google.aaaaca(Credential.java:217) at com.google.aacrp(HttpRequest.java:859) […]

使用Firebase在GoogleApiClient中出现罕见的NullPointerException

我使用GoogleApiClient使用他们的Google帐户登录用户。 基本上,我正在使用Firebase Auth与Google登录。 但我每天都会在某些设备上崩溃 。 当我在我自己的一些设备(OnePlus 3,Nexus 5X,Moto G等)上进行测试时,我从未看到过这种情况。 Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method ‘java.lang.String java.lang.String.toLowerCase(java.util.Locale)’ on a null object reference at com.google.android.gms.internal.zzamy.zzd(Unknown Source) at com.google.android.gms.internal.zzamv.n(Unknown Source) at com.google.android.gms.internal.zzamv.zza(Unknown Source) at com.google.android.gms.internal.zzamv$2.run(Unknown Source) at java.lang.Thread.run(Thread.java:818) 这就是我正在做的实例化GoogleApiClient。 我没有看到正常情况下的崩溃,但在某些设备中我看到了这一点。 这是我在代码中所做的事情, String mClientId = parcel.getProviderExtra().getString(CLIENT_ID_KEY); GoogleSignInOptions googleSignInOptions; googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(mClientId) .requestEmail() .build(); mGoogleApiClient […]

在服务中使用GoogleApiClient

我正在尝试获取位置更新信息。 为此我创建了一个服务,在服务类的onStartCommand中,我正在创建GoogleApiClient,但我没有在服务中获得连接回调。 请帮忙解决这个问题。 下面给出的是服务代码和活动我已经使用startService方法启动了服务: startService(new Intent(this, LocationService.class)); 服务代码 public class LocationService extends Service implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener { private GoogleApiClient mLocationClient; private Location mCurrentLocation; LocationRequest mLocationRequest; @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO do something useful Toast.makeText(this, “onStartCommand”, Toast.LENGTH_SHORT).show(); mLocationClient = new GoogleApiClient.Builder(LocationService.this) .addApi(LocationServices.API).addConnectionCallbacks(LocationService.this) .addOnConnectionFailedListener(LocationService.this).build(); mLocationRequest = new LocationRequest(); mLocationRequest.setInterval(1000); […]

GoogleApiClient登录失败

我正试图在我的Android游戏中使用Google Games回合制Api。 我用来连接GoogleApiClient的代码来自Google的Api示例或文档。 在我的onConnectionFailed实现中,我尝试了两种不同的方法: if (signInClicked || autoStartSignInFlow) { autoStartSignInFlow = false; signInClicked = false; resolvingConnectionFailure = true; // Attempt to resolve the connection failure using BaseGameUtils. // The R.string.signin_other_error value should reference a generic // error string in your strings.xml file, such as “There was // an issue with sign-in, please try again later.” […]

SecurityException:不允许启动服务Intent act = com.google.android.c2dm.intent.REGISTER

我得到错误SecurityException: Not allowed to start service Intent但看起来在搜索许多主题后它没有很好的解决方案。 请帮帮我, 谢谢, p / s: 我确保使用了正确的SENDER_ID因为项目编号是在Google API Console定义的,并且正确的package name 。 错误: Caused by: java.lang.SecurityException: Not allowed to start service Intent { act=com.google.android.c2dm.intent.REGISTER pkg=com.google.android.gms (has extras) } without permission com.google.android.c2dm.permission.RECEIVE at android.app.ContextImpl.startServiceAsUser(ContextImpl.java:1785) at android.app.ContextImpl.startService(ContextImpl.java:1757) at android.content.ContextWrapper.startService(ContextWrapper.java:480) at com.google.android.gms.gcm.GoogleCloudMessaging.e(Unknown Source) at com.google.android.gms.gcm.GoogleCloudMessaging.register(Unknown Source) at controller.RegisterGCMClientAsync.doInBackground(RegisterGCMClientAsync.java:62) at controller.RegisterGCMClientAsync.doInBackground(RegisterGCMClientAsync.java:18) at android.os.AsyncTask$2.call(AsyncTask.java:287) at […]

什么是新生成的代码“这是自动生成的,用于实现App Indexing API。”?

背景 我今天刚刚创建了一个新的POC(关于活动转换,但这不是主题),我注意到在主要活动的“onCreate”方法中写了一个新行: // ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 和更多: @Override public void onStart() { super.onStart(); // ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. mClient.connect(); Action viewAction = Action.newAction( Action.TYPE_VIEW, // TODO: […]