나는 안드로이드 6.0을 사용하고 그것은 내 카메라 의도를 엽니 다Android에서 카메라와 영화 모드를 구분하는 방법은 무엇입니까?
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
getApplication().startActivity(intent);
} catch (final ActivityNotFoundException e) {
e.printStackTrace();
}
에 의해 카메라 의도를 열고 있어요. 동영상 버튼을 누르면 동영상 GUI가 표시됩니다. 나는 카메라와 영화의 의도를 구별하고 싶다. 둘 다 카메라라는 이름을 가지고 있기 때문에 어떻게 프로그래밍으로 알 수 있습니까? 이것은 현재 프로세스 이름을 얻을 내 코드입니다
String foregroundProcess = null;
UsageStatsManager mUsageStatsManager = (UsageStatsManager) getApplicationContext().getSystemService(Service.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
UsageEvents usageEvents = mUsageStatsManager.queryEvents(time - 1000 * 3600, time);
UsageEvents.Event event = new UsageEvents.Event();
while (usageEvents.hasNextEvent()) {
usageEvents.getNextEvent(event);
if(event.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) {
foregroundProcess = event.getPackageName();
}
}
//Convert package name to application name
final PackageManager pm = getApplicationContext().getPackageManager();
ApplicationInfo ai;
try {
ai = pm.getApplicationInfo(foregroundProcess, 0);
} catch (final PackageManager.NameNotFoundException e) {
ai = null;
}
String applicationName = (String) (ai != null ? pm.getApplicationLabel(ai) : "(unknown)");
return applicationName;
감사합니다. 내 질문을 더 명확하게 업데이트합니다. 실제로, 나는 기록 단추를 눌러서 뿌리 전화에있는 2 개의 형태를 전환 할 수있다 : 카메라와 영화. 위의 함수를 사용하면 현재 응용 프로그램 이름을 얻을 수 있으며 두 모드 모두에서 카메라와 동일한 결과가 표시됩니다. – user8264
@ user8264 : 사용자는 '의도'에 대해 동일한 앱을 선택하는 것을 환영합니다. 해당 앱이 사진을 찍거나, 동영상을 녹화하거나, 설정 화면에 표시하거나, 다른 작업을 수행하는지 여부 이러한 제어가 필요한 경우 이러한 'Intent'액션을 사용하지 말고 앱에 직접 카메라 기능을 구현하십시오. 게다가 'UsageStatsManager'는 실시간이 아닙니다 ("참고 : 응용 프로그램의 남용을 막기 위해 이벤트 로그의 마지막 몇 분은 잘립니다"). 따라서 기존 코드가 안정적으로 작동하지 않습니다. – CommonsWare
그래서 우리는 이러한 모드를 구분할 방법이 없습니다. 내 목표는 카메라 캡처 및 카메라 기록과 같은 현재 프로세스 이름을 감지하는 것입니다. 가능한가? – user8264