mGoogleApiClient.isConnected() returns 空
mGoogleApiClient.isConnected() returns null
我已完成所有 Whosebug 问题并尝试了所有方法,但问题仍然存在。
public class PlaceInfoActivity extends ActionBarActivity implements
GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
private static final String LOG_TAG = "PlaceInfoActivity";
private static final int GOOGLE_API_CLIENT_ID = 0;
private GoogleApiClient mGoogleApiClient;
TextView mTextView;
String content = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_place_info);
mTextView = (TextView) findViewById(R.id.textView0);
mGoogleApiClient = new GoogleApiClient
.Builder(this)
.enableAutoManage(this, 0, this)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
Toast.makeText(this, Boolean.toString(mGoogleApiClient.isConnected()), Toast.LENGTH_SHORT).show();
if (mGoogleApiClient.isConnected()) {
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
PlaceLikelihood placeLikelihood = likelyPlaces.get(0);
if (placeLikelihood != null && placeLikelihood.getPlace() != null && !TextUtils.isEmpty(placeLikelihood.getPlace().getName()))
content = "Most likely place: " + placeLikelihood.getPlace().getName() + "\n";
if (placeLikelihood != null)
content += "Percent change of being there: " + (int) (placeLikelihood.getLikelihood() * 100) + "%";
mTextView.setText(content);
likelyPlaces.release();
}
});
}
}
@Override
protected void onStart() {
super.onStart();
if (mGoogleApiClient != null)
mGoogleApiClient.connect();
}
@Override
protected void onResume() {
super.onResume();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
super.onStop();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
@Override
public void onConnected(Bundle bundle) {
}
@Override
public void onConnectionSuspended(int i) {
} }
构建后,当我打印 toast 时,它每次都给出 false,可能是什么错误?我正在学习本教程并想检索我当前位置的名称。
http://code.tutsplus.com/articles/google-play-services-using-the-places-api--cms-23715
它总是错误的,因为你调用 connect()
onStart
。声明一个方法
public void showPlaces() {
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
PlaceLikelihood placeLikelihood = likelyPlaces.get(0);
if (placeLikelihood != null && placeLikelihood.getPlace() != null && !TextUtils.isEmpty(placeLikelihood.getPlace().getName()))
content = "Most likely place: " + placeLikelihood.getPlace().getName() + "\n";
if (placeLikelihood != null)
content += "Percent change of being there: " + (int) (placeLikelihood.getLikelihood() * 100) + "%";
mTextView.setText(content);
likelyPlaces.release();
}
});
}
并调用它,当 onConnected
被调用时
@Override
public void onConnected(Bundle bundle) {
showPlaces();
}
问题出在 mGoogleApiClient.isConnected() 上,它给你错误,这就是它无法执行进一步工作的原因。如果您只是删除 if(mGoogleApiClient.isConnected()) 部分,它将起作用。
这样做:
public void showPlaces() {
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
StringBuffer sb=new StringBuffer();
for (PlaceLikelihood placeLikelihood : likelyPlaces) {
String name, per;
name = placeLikelihood.getPlace().getName().toString()+" ";
per = ""+(int) (placeLikelihood.getLikelihood() * 100)+"\n";
sb.append(name+per);
}
content = sb.toString();
mTextView.setText(content);
likelyPlaces.release();
}
});
}
并在 mGoogleApiClient....build() 之后调用 showPlaces 方法;
mGoogleApiClient = new GoogleApiClient
.Builder(this)
.enableAutoManage(this, 0, this)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
showPlaces();
我已完成所有 Whosebug 问题并尝试了所有方法,但问题仍然存在。
public class PlaceInfoActivity extends ActionBarActivity implements
GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
private static final String LOG_TAG = "PlaceInfoActivity";
private static final int GOOGLE_API_CLIENT_ID = 0;
private GoogleApiClient mGoogleApiClient;
TextView mTextView;
String content = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_place_info);
mTextView = (TextView) findViewById(R.id.textView0);
mGoogleApiClient = new GoogleApiClient
.Builder(this)
.enableAutoManage(this, 0, this)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
Toast.makeText(this, Boolean.toString(mGoogleApiClient.isConnected()), Toast.LENGTH_SHORT).show();
if (mGoogleApiClient.isConnected()) {
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
PlaceLikelihood placeLikelihood = likelyPlaces.get(0);
if (placeLikelihood != null && placeLikelihood.getPlace() != null && !TextUtils.isEmpty(placeLikelihood.getPlace().getName()))
content = "Most likely place: " + placeLikelihood.getPlace().getName() + "\n";
if (placeLikelihood != null)
content += "Percent change of being there: " + (int) (placeLikelihood.getLikelihood() * 100) + "%";
mTextView.setText(content);
likelyPlaces.release();
}
});
}
}
@Override
protected void onStart() {
super.onStart();
if (mGoogleApiClient != null)
mGoogleApiClient.connect();
}
@Override
protected void onResume() {
super.onResume();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
super.onStop();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
@Override
public void onConnected(Bundle bundle) {
}
@Override
public void onConnectionSuspended(int i) {
} }
构建后,当我打印 toast 时,它每次都给出 false,可能是什么错误?我正在学习本教程并想检索我当前位置的名称。 http://code.tutsplus.com/articles/google-play-services-using-the-places-api--cms-23715
它总是错误的,因为你调用 connect()
onStart
。声明一个方法
public void showPlaces() {
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
PlaceLikelihood placeLikelihood = likelyPlaces.get(0);
if (placeLikelihood != null && placeLikelihood.getPlace() != null && !TextUtils.isEmpty(placeLikelihood.getPlace().getName()))
content = "Most likely place: " + placeLikelihood.getPlace().getName() + "\n";
if (placeLikelihood != null)
content += "Percent change of being there: " + (int) (placeLikelihood.getLikelihood() * 100) + "%";
mTextView.setText(content);
likelyPlaces.release();
}
});
}
并调用它,当 onConnected
被调用时
@Override
public void onConnected(Bundle bundle) {
showPlaces();
}
问题出在 mGoogleApiClient.isConnected() 上,它给你错误,这就是它无法执行进一步工作的原因。如果您只是删除 if(mGoogleApiClient.isConnected()) 部分,它将起作用。
这样做:
public void showPlaces() {
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
StringBuffer sb=new StringBuffer();
for (PlaceLikelihood placeLikelihood : likelyPlaces) {
String name, per;
name = placeLikelihood.getPlace().getName().toString()+" ";
per = ""+(int) (placeLikelihood.getLikelihood() * 100)+"\n";
sb.append(name+per);
}
content = sb.toString();
mTextView.setText(content);
likelyPlaces.release();
}
});
}
并在 mGoogleApiClient....build() 之后调用 showPlaces 方法;
mGoogleApiClient = new GoogleApiClient
.Builder(this)
.enableAutoManage(this, 0, this)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
showPlaces();