Хорошо, этот вопрос был задан, и я попробовал все из решений, предлагаемых, но ни один из них не похож на работу,не удается разрешить методы requestLocationUpdates с помощью учебника Pubnub
Я использую учебник Pubnub который отображает мое местоположение в в реальном времени в приложении для Android, я столкнулся с несколькими ошибками, которые я не могу решить, в основном был «Не удается разрешить методы requestLocationUpdates»
Я видел в предыдущих сообщениях для добавления, импорта android.location.LocationListener; к импорту, но он ничего не меняет.
Если у кого-нибудь есть какое-либо решение, было бы здорово, а также мои другие ошибки, если вы знаете.
Основная деятельность:
package nixerpubcom.nixerpub;
import android.location.Location;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.pubnub.api.PubnubError;
import android.location.LocationListener;
import org.json.JSONException;
import org.json.JSONObject;
import javax.security.auth.callback.Callback;
public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks {
//Create Google API Client
private GoogleApiClient mGoogleApiClient;
//Create pubnub variable
private Pubnub mPubnub;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Start The Google Client
this.buildGoogleApiClient();
mGoogleApiClient.connect();
//Retrieve pubnub keys
mPubnub = new Pubnub ("pub-c-fe4ed754-2b9d-4563-abb6-63c3f048f9ad","sub-c-82de7130-eacb-11e5-8346-0619f8945a4f");
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
//Google Api build Method
private synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this).addApi(LocationServices.API)
.build();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
// Implement the Connection Callback
@Override
public void onConnected(Bundle connectionHint) {
LocationRequest mLocationRequest = createLocationRequest();
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
}
@Override
public void onConnectionSuspended(int cause) {
Log.d(TAG, "Connection to Google API Suspended ");
}
private LocationRequest createLocationRequest() {
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
return mLocationRequest;
}
@Override
public void onLocationChanged(Location location) {
broadcastLocation(location);
}
private void broadcastLocation(Location location) {
JSONObject message = new JSONObject();
try {
message.put("lat", location.getLatitude());
message.put("lng", location.getLongitude());
message.put("alt", location.getAltitude());
} catch (JSONException e) {
Log.e(TAG, e.toString());
}
mPubnub.publish("A Channel Name", message, publishCallback);
}
KeyEvent.Callback publishCallback = new Callback() {
@Override
public void successCallback(String channel, Object response) {
Log.d("PUBNUB", response.toString());
}
@Override
public void errorCallback(String channel, PubnubError error) {
Log.e("PUBNUB", error.toString());
}
};
}
Я новичок в этом, так что я прошу прощения, если вопрос не правильно отформатирована.