У меня есть приложение для Android, с помощью которого я пытаюсь обнаружить изменения в активности пользователей. Приложение имеет разрешение пользователя на обнаружение активности пользователя. У меня есть внешний и внутренний приемники вещания, внешний приемник вещания должен определять, когда пользователь начал ездить на велосипеде, затем он отправляет намерение с фильтром на внутренний приемник вещания приложения, который должен установить текст в TextView, чтобы пользователь начал ехать на велосипеде, когда внешний приемник вещания обнаруживает, что пользователь прекратил езду на велосипеде и идет пешком, он запускает намерение с фильтром, согласно которому пользователь прекратил езду на велосипеде, на внутренний приемник, который соответствующим образом изменяет TextView. Трансляция не запускается, помогите мне ее запустить, вот логика в Java-файле основного действия.
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
//call method to start requesting activity updates
requestBikeActivityUpdates();
}
}
//method to request activity updates
@RequiresApi(api = Build.VERSION_CODES.Q)
private void requestBikeActivityUpdates() {
ActivityRecognitionClient client = ActivityRecognition.getClient(this);
ActivityTransitionRequest request = new ActivityTransitionRequest(
Arrays.asList(
new ActivityTransition.Builder().setActivityType(DetectedActivity.ON_BICYCLE).setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER).build(), new ActivityTransition.Builder().setActivityType(DetectedActivity.ON_BICYCLE).setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT).build()));
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this, 0, new Intent("com.google.android.gms.location.ACTIVITY_TRANSITION_RESULT"), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACTIVITY_RECOGNITION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this, new String[] {
Manifest.permission.ACTIVITY_RECOGNITION
},
909);
return;
}
Task < Void > task = client.requestActivityTransitionUpdates(request, pendingIntent);
task.addOnSuccessListener(unused - >Toast.makeText(getApplicationContext(), "task succeeded", Toast.LENGTH_SHORT).show());
task.addOnFailureListener(e - >Toast.makeText(getApplicationContext(), "task failed", Toast.LENGTH_SHORT).show());
}
Реализация внешнего и внутреннего приемников вещания приведена ниже.
Внешний приемник вещания велосипеда
public class BikeActivityReceiver extends BroadcastReceiver {@Override
public void onReceive(Context context, Intent intent) {
// The correct API for activity updates
if (ActivityTransitionResult.hasResult(intent)) {
ActivityTransitionResult result = ActivityTransitionResult.extractResult(intent);
assert result != null;
for (ActivityTransitionEvent event: result.getTransitionEvents()) {
if (event.getActivityType() == DetectedActivity.ON_BICYCLE) {
if (event.getTransitionType() == ActivityTransition.ACTIVITY_TRANSITION_ENTER) {
// User started biking
sendUpdate(context, true);
Log.d("Bike", "ENTER BICYCLE");
}
if (event.getTransitionType() == ActivityTransition.ACTIVITY_TRANSITION_EXIT) {
// User stopped biking
sendUpdate(context, false);
Log.d("Bike", "EXIT BICYCLE");
}
}
}
}
}
private void sendUpdate(Context ctx, boolean biking) {
Intent i = new Intent("BIKE_ACTIVITY_UPDATE");
i.putExtra("status", biking ? "biking": "not_biking");
LocalBroadcastManager.getInstance(ctx).sendBroadcast(i);
}
}
а затем внутренний приемник, который меняет текстовое представление при изменении активности
private final BroadcastReceiver receiver = new BikeActivityReceiver() {@Override
public void onReceive(Context context, Intent intent) {
String status = intent.getStringExtra("status");
assert status != null;
if (status.equals("biking")) {
bikeStatusText.setText(R.string.biking);
} else {
bikeStatusText.setText(R.string.nbiking);
}
}
};
Подробнее здесь: https://stackoverflow.com/questions/798 ... ty-changes
Приложение Android не обнаруживает изменения активности велосипедиста ⇐ Android
Форум для тех, кто программирует под Android
1765519722
Anonymous
У меня есть приложение для Android, с помощью которого я пытаюсь обнаружить изменения в активности пользователей. Приложение имеет разрешение пользователя на обнаружение активности пользователя. У меня есть внешний и внутренний приемники вещания, внешний приемник вещания должен определять, когда пользователь начал ездить на велосипеде, затем он отправляет намерение с фильтром на внутренний приемник вещания приложения, который должен установить текст в TextView, чтобы пользователь начал ехать на велосипеде, когда внешний приемник вещания обнаруживает, что пользователь прекратил езду на велосипеде и идет пешком, он запускает намерение с фильтром, согласно которому пользователь прекратил езду на велосипеде, на внутренний приемник, который соответствующим образом изменяет TextView. Трансляция не запускается, помогите мне ее запустить, вот логика в Java-файле основного действия.
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
//call method to start requesting activity updates
requestBikeActivityUpdates();
}
}
//method to request activity updates
@RequiresApi(api = Build.VERSION_CODES.Q)
private void requestBikeActivityUpdates() {
ActivityRecognitionClient client = ActivityRecognition.getClient(this);
ActivityTransitionRequest request = new ActivityTransitionRequest(
Arrays.asList(
new ActivityTransition.Builder().setActivityType(DetectedActivity.ON_BICYCLE).setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_ENTER).build(), new ActivityTransition.Builder().setActivityType(DetectedActivity.ON_BICYCLE).setActivityTransition(ActivityTransition.ACTIVITY_TRANSITION_EXIT).build()));
PendingIntent pendingIntent = PendingIntent.getBroadcast(
this, 0, new Intent("com.google.android.gms.location.ACTIVITY_TRANSITION_RESULT"), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACTIVITY_RECOGNITION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this, new String[] {
Manifest.permission.ACTIVITY_RECOGNITION
},
909);
return;
}
Task < Void > task = client.requestActivityTransitionUpdates(request, pendingIntent);
task.addOnSuccessListener(unused - >Toast.makeText(getApplicationContext(), "task succeeded", Toast.LENGTH_SHORT).show());
task.addOnFailureListener(e - >Toast.makeText(getApplicationContext(), "task failed", Toast.LENGTH_SHORT).show());
}
Реализация внешнего и внутреннего приемников вещания приведена ниже.
[b]Внешний приемник вещания велосипеда[/b]
public class BikeActivityReceiver extends BroadcastReceiver {@Override
public void onReceive(Context context, Intent intent) {
// The correct API for activity updates
if (ActivityTransitionResult.hasResult(intent)) {
ActivityTransitionResult result = ActivityTransitionResult.extractResult(intent);
assert result != null;
for (ActivityTransitionEvent event: result.getTransitionEvents()) {
if (event.getActivityType() == DetectedActivity.ON_BICYCLE) {
if (event.getTransitionType() == ActivityTransition.ACTIVITY_TRANSITION_ENTER) {
// User started biking
sendUpdate(context, true);
Log.d("Bike", "ENTER BICYCLE");
}
if (event.getTransitionType() == ActivityTransition.ACTIVITY_TRANSITION_EXIT) {
// User stopped biking
sendUpdate(context, false);
Log.d("Bike", "EXIT BICYCLE");
}
}
}
}
}
private void sendUpdate(Context ctx, boolean biking) {
Intent i = new Intent("BIKE_ACTIVITY_UPDATE");
i.putExtra("status", biking ? "biking": "not_biking");
LocalBroadcastManager.getInstance(ctx).sendBroadcast(i);
}
}
а затем внутренний приемник, который меняет текстовое представление при изменении активности
private final BroadcastReceiver receiver = new BikeActivityReceiver() {@Override
public void onReceive(Context context, Intent intent) {
String status = intent.getStringExtra("status");
assert status != null;
if (status.equals("biking")) {
bikeStatusText.setText(R.string.biking);
} else {
bikeStatusText.setText(R.string.nbiking);
}
}
};
Подробнее здесь: [url]https://stackoverflow.com/questions/79844588/android-app-not-detecting-bike-activity-changes[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия