В моем приложении для Android мне нужно определить событие захвата экрана. Как мне это сделать?Как поймать событие захвата экрана на устройствах Android?
3
A
ответ
0
Я использовал этот код в своем приложении, и он отлично работает. Он уведомляет, когда снимок сделан. Я тестировал его на OnePlus 1, Nexus 6P, Moto G3. Никаких проблем на каких-либо устройствах.
public void detectScreenShotService(final Activity activity) {
final Handler h = new Handler();
final int delay = 3000; //milliseconds
final ActivityManager am = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
h.postDelayed(new Runnable() {
public void run() {
List<ActivityManager.RunningServiceInfo> rs = am.getRunningServices(200);
for (ActivityManager.RunningServiceInfo ar : rs) {
if (ar.process.equals("com.android.systemui:screenshot")) {
Toast.makeText(activity, "Screenshot captured!!", Toast.LENGTH_LONG).show();
}
}
h.postDelayed(this, delay);
}
}, delay);
}
+0
Это может повлиять на производительность, потому что все действия выполняются в главной теме. Чтобы избежать этого, используйте что-то вроде HandlerThread для выполнения на фоне (http://stackoverflow.com/a/29389627/5222184) – qpator
* Я не нашел ответа на него * * -> Лучше, если вы его ищете, прежде чем найти его. Я лично рекомендую поисковую систему Google, которую я использовал, чтобы найти много дубликатов этого вопроса без усилий (просто скопируйте/вставляйте заголовок, действительно). – 2Dee
@ 2Dee Я попытался с Google, прежде чем создавать новый вопрос в переполнении стека. И на этом сайте я нашел тот же вопрос, но у него нет ответа. – TOP