我的主要活动java。该应用程序正在运行,但如果我摇动我的Android设备,它不会显示我的广告。我的logcat说我的传感器或监听器是空的。当我摇动手机时没有任何反应。
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
MagicAnswer mMagicAnswer;
private GoogleMap mMap;
private LocationManager manager;
private LocationListener locationListener;
private TextView textView;
private SensorManager mSensorManager;
private Sensor mSensorAccelerometer;
private ShakeDetector mShakeDetector;
private TextView mAnswerTV;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
mAnswerTV = (TextView) findViewById(R.id.textView);
mMagicAnswer = new MagicAnswer(MapsActivity.this);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mShakeDetector = new ShakeDetector(new ShakeDetector.OnShakeListener() {
@Override
public void onShake() {
displayMagicAnswer();
}
private void displayMagicAnswer() {
String magicAnswer = mMagicAnswer.getRandomAnswer();
mAnswerTV.setText(magicAnswer);
}
});
Thread myThread = null;
Runnable runnable = new CountDownRunner();
myThread = new Thread(runnable);
myThread.start();
Calendar c = Calendar.getInstance();
TextView txtCurDateTime = (TextView) findViewById(R.id.test_yes);
SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss aa");
String datetime = dateformat.format(c.getTime());
txtCurDateTime.setText(datetime);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
//get the location service
manager = (LocationManager) getSystemService(LOCATION_SERVICE);
//request the location update thru location manager
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
//get the latitude and longitude from the location
double latitude = location.getLatitude();
double longitude = location.getLongitude();
//get the location name from latitude and longitude
Geocoder geocoder = new Geocoder(getApplicationContext());
try {
List<Address> addresses =
geocoder.getFromLocation(latitude, longitude, 1);
String result = addresses.get(0).getSubLocality() + ":";
result += addresses.get(0).getLocality() + ":";
result += addresses.get(0).getCountryCode();
LatLng latLng = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(latLng).title(result));
mMap.setMaxZoomPreference(20);
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
@Override
public void onResume() {
super.onResume();
mSensorManager.registerListener(mShakeDetector, mSensorAccelerometer, SensorManager.SENSOR_DELAY_UI);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
//LatLng Tandragee = new LatLng(6, 53);
//mMap.addMarker(new MarkerOptions().position(Tandragee).title("Marker in Tandragee"));
//mMap.moveCamera(CameraUpdateFactory.newLatLng(Tandragee));
}
public void onSensorChange(SensorEvent sensorEvent) {
}
@Override
public void onPause() {
super.onPause();
manager.removeUpdates(locationListener);
Log.i("onPause...", "paused");
mSensorManager.unregisterListener(mShakeDetector, mSensorAccelerometer);
}
public void doWork() {
runOnUiThread(new Runnable() {
public void run() {
try {
TextView txtCurrentDate = (TextView) findViewById(R.id.main);
Date dt = new Date();
int hours = dt.getHours();
int minutes = dt.getMinutes();
int seconds = dt.getSeconds();
String curTime = hours + ":" + minutes + ":" + seconds;
txtCurrentDate.setText(curTime);
} catch (Exception e) {
}
}
});
}
class CountDownRunner implements Runnable {
// @Override
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
doWork();
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} catch (Exception e) {
}
}
}
}
}