getLastLocation()不起作用

时间:2016-01-03 07:09:24

标签: android

pthread_exit()

}

我已经尝试了很多次,但这段代码似乎没有用。我已设置所需的所有权限和依赖项。它仍然没有在屏幕上显示任何内容。

我使用ANDROID EMULATOR

谢谢....

这是我的清单文件:

public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

GoogleApiClient mGoogleApiClient;
TextView mLatitude;
TextView mLongitude;

final String TAG = " ";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    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();
        }
    });
    mLatitude = (TextView) findViewById(R.id.mLatitude);
    mLongitude = (TextView) findViewById(R.id.mLongitude);
    mGoogleApiClient = new      GoogleApiClient.Builder(this).addApi(LocationServices.API).addConnectionCallbacks(this).addOnConnectionFailedListener(this).build();


}

protected void onStart() {
    mGoogleApiClient.connect();
    super.onStart();
}

protected void onStop() {
    mGoogleApiClient.disconnect();
    super.onStop();
}

@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);
}


@Override
public void onConnected(Bundle bundle) throws SecurityException{


    Location mLastLocation =  LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
    if(mLastLocation!=null)
    {
        Log.i(TAG,"last location recieved");
        mLatitude.setText(String.valueOf(mLastLocation.getLatitude()));
        mLongitude.setText(String.valueOf(mLastLocation.getLongitude()));
    }
    else
    {
        Log.i(TAG,"LOCATION NOT RECEIVED");
    }
}

@Override
public void onConnectionSuspended(int i) {
    Log.i(TAG,"connection suspended");
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.i(TAG,"connection failed");
}

build.app文件如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairaman.lastlocation">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

 </application>
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

</manifest>

1 个答案:

答案 0 :(得分:1)

位置可能无法在模拟器上正常运行。在设备上测试。

作为pr this question:从模拟器中你无法获得当前位置。你必须自己通过位置。这个

C:/android sdk/tools/ddms.bat

当你运行这个bat文件时,你会在那里找到一个模拟器选项卡。从此选项卡中,您可以将位置传递给模拟器。