Я пытаюсь сделать виджет Android для домашнего экрана, который изменит значок виджета, если обнаружено движение.Android: Можно ли обнаружить движение/встряску с помощью виджета на главном экране?
Я знаю, как создать виджет и как изменить значок виджета с помощью AppWidgetProvider
RemoteViews
, Я также способен обнаруживать движение с помощью Sensor.TYPE_ACCELEROMETER
, с в Activity
. но, как вы знаете, нет активности, и я понятия не имею. как обнаружить движение через виджет, поделитесь своими мыслями.
Я подумал о службе, но не знаю, как сделать это держать ход, который обнаружит встряхивания/движения и может создать статическую переменную в моем обычае AppWidgetProvider
где при обновлении я мог бы проверить состояние этой статической переменной если его изменить, я могу изменить значок виджета. Спасибо заранее.
Примечание: Я использую уровень API 8. android:minSdkVersion="8"
Решение: Я принимаю в ответ, приведенный ниже, потому что он помог мне найти то, что я искал и, наконец, мне удалось, вот как Я сделал это
Моей реализация AppWidgetProvider
класса запуска пользовательских Service
, Эта служба работает на заднем конце, который реализует SensorEventListener
, я переопределить метод onStartCommand
и создал объект из SensorManager
, а также создал объект Notification
, который отображается в области уведомлений, и я начал свое уведомление в качестве переднего плана.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (sensorManager == null) {
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);
}
Notification notification = new Notification(R.drawable.MyIcon,"In Action", System.currentTimeMillis());
Intent notificationIntent = new Intent(this, SayHello.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, "In Action","Service is running in foreground", pendingIntent);
//This worked for me
startForeground(ONGOING_NOTIFICATION_ID, notification);
return START_NOT_STICKY;
}
Спасибо за ваш ответ, мне не нужно обнаруживать дополнительное движение только встряхивание или передвижное движение [уже было сделано с встроенным API Android], как бы я это не помню, если я до этого такого приложения, однако теперь я прочитаю вашу первую ссылку. благодаря –