2016-08-11 21 views
0

註冊圍欄我嘗試使用下面的代碼來更新柵欄:谷歌意識API不能在模擬器

AwarenessFence locationFence = LocationFence.entering(latitude, longitude, radius); 

    Awareness.FenceApi.updateFences(
      mGoogleApiClient, 
      new FenceUpdateRequest.Builder() 
        .addFence(LOCATION_FENCE_KEY, locationFence, mPendingIntent) 
        .build()) 
      .setResultCallback(new ResultCallback<Status>() { 
       @Override 
       public void onResult(@NonNull Status status) { 
        if (status.isSuccess()) { 
         Log.i(TAG, "Fence was successfully registered."); 
        } else { 
         Log.e(TAG, "Fence could not be registered: " + status); 
        } 
       } 
      }); 

它正常工作的物理設備,但在模擬器我獲得以下logcat的消息:

Status{statusCode=unknown status code: 7503, resolution=null} 

有沒有人有任何想法可能會導致這個問題?

回答

0

根據該文件,7503 means

ACL_ACCESS_DENIED:ACL認證失敗。

但是,好像這是一個模擬器的問題,因爲註冊TimeFence確實爲我工作。而位置和ActivityFences則不。

AwarenessFence timeFence = TimeFence.inSaturdayInterval(TimeZone.getDefault(), 0, 24 * 60 * 60 * 1000); 
0

要使用意識API,您需要:

GooglePlayServices(模擬器上,谷歌API)的

到達地點柵欄:在設備啓動定位服務。如果在仿真器或支架設備上,我認爲你可以僞裝它。

似乎活動檢測意識使用了一堆複雜的傳感器,如加速度計,giroscope,位置等等。所以我現在不會在模擬器上有多高效。

最後,設備/仿真器需要Internet連接!乍一看,你可以認爲Awareness location API是一個離線服務。 這不是。如果您查看了Google開發者控制檯,則可以看到Google服務器的認知請求。

錯誤,由@jmols親切地說明了這個故事:API正在嘗試訪問安全鏈來連接意識服務,並且失敗。可能是因爲該設備沒有網絡連接。

如果您的在您的模擬器上有互聯網連接,請在Google Developer Console中仔細檢查此API的憑據。

相關問題