Tôi cần phát hiện xem thiết bị HDMI có được kết nối hay không với thiết bị Android của tôi. Đối với điều này tôi đang sử dụng một BroadcastReceiver và nó có thể phát hiện cũng. Nhưng với BroadcastReceiver, tôi không thể xử lý tình huống khi thiết bị HDMI được kết nối ngay cả trước khi ứng dụng của tôi bị tắt. Trong trường hợp này, BroadcastReceiver không thể tìm thấy nếu bất kỳ thiết bị HDMI nào được kết nối hay không. Có cách nào tôi có thể biết liệu thiết bị HDMI nào được kết nối hay không tại bất kỳ điểm nào?Cách kiểm tra trạng thái kết nối thiết bị HDMI trong Android?
Trả lời
tôi đến với điều này bằng cách sử dụng câu trả lời khác và một số từ nơi khác:
/**
* Checks device switch files to see if an HDMI device/MHL device is plugged in, returning true if so.
*/
private boolean isHdmiSwitchSet() {
// The file '/sys/devices/virtual/switch/hdmi/state' holds an int -- if it's 1 then an HDMI device is connected.
// An alternative file to check is '/sys/class/switch/hdmi/state' which exists instead on certain devices.
File switchFile = new File("/sys/devices/virtual/switch/hdmi/state");
if (!switchFile.exists()) {
switchFile = new File("/sys/class/switch/hdmi/state");
}
try {
Scanner switchFileScanner = new Scanner(switchFile);
int switchValue = switchFileScanner.nextInt();
switchFileScanner.close();
return switchValue > 0;
} catch (Exception e) {
return false;
}
}
Nếu bạn đang kiểm tra thường xuyên, bạn muốn để lưu trữ kết quả và cập nhật nó với người nghe @ hamen của .
Cùng một vấn đề ở đây. Một số google-ing nói với tôi không có nhiều hy vọng với các nhà sản xuất khác ngoài Motorola, tuy nhiên từ http://developer.sonymobile.com/wp/2012/05/29/how-to-use-the-hidden-hdmi-api-tutorial/:
Một ứng dụng có thể phát hiện nếu điện thoại được kết nối thông qua một nối HDMI bằng cách lắng nghe đến mục đích phát sóng: "com .sonyericsson.intent.action.HDMI_EVENT"
kiểm tra các tập tin/sys/lớp/switch/HDMI/tiểu bang, nếu đó là 1 thì nó kết nối với HDMI
thực hiện điều này có giả thiết rằng thiết bị phải được root? – Adi
không, thiết bị không cần phải được bắt nguồn từ –
tôi ra với điều này cuối cùng. Nó hoạt động trên S3 và S4. Nó sẽ hoạt động với bất kỳ phiên bản Android 4+ nào.
public class HdmiListener extends BroadcastReceiver {
private static String HDMIINTENT = "android.intent.action.HDMI_PLUGGED";
@Override
public void onReceive(Context ctxt, Intent receivedIt) {
String action = receivedIt.getAction();
if (action.equals(HDMIINTENT)) {
boolean state = receivedIt.getBooleanExtra("state", false);
if (state) {
Log.d("HDMIListner", "BroadcastReceiver.onReceive() : Connected HDMI-TV");
Toast.makeText(ctxt, "HDMI >>", Toast.LENGTH_LONG).show();
} else {
Log.d("HDMIListner", "HDMI >>: Disconnected HDMI-TV");
Toast.makeText(ctxt, "HDMI DisConnected>>", Toast.LENGTH_LONG).show();
}
}
}
}
AndroidManifest.xml cần này vào thẻ ứng dụng:
<receiver android:name="__com.example.android__.HdmiListener" >
<intent-filter>
<action android:name="android.intent.action.HDMI_PLUGGED" />
</intent-filter>
</receiver>
Điều này đã giúp tôi phát hiện xem hdmi được kết nối hay ngắt kết nối, nhưng không biết là hdmi được kết nối trước khi chạy ứng dụng. – jch
Bạn có thể lấy dữ liệu từ /sys/class/display/display0.hdmi/connect
. Nếu nội dung của tập tin là 0
, HDMI không được kết nối, nếu không nếu là 1
, thì HDMI sẽ được kết nối.
try {
File file = new File("/sys/class/display/display0.hdmi/connect");
InputStream in = new FileInputStream(file);
byte[] re = new byte[32768];
int read = 0;
while ((read = in.read(re, 0, 32768)) != -1) {
String string = new String(re, 0, read);
Log.v("String_whilecondition", "HDMI state = " + string);
result = string;
}
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
thực hiện điều này có giả thiết rằng thiết bị phải được root? – Adi
tôi nghĩ rằng không cần phải root thiết bị. –
- 1. Javascript để kiểm tra trạng thái kết nối không dây
- 2. Android, AsyncTask, hãy kiểm tra trạng thái?
- 3. cách tìm trạng thái màn hình trên thiết bị Android?
- 4. Kiểm tra trạng thái capsLock
- 5. Internet kết nối kiểm tra trong Android
- 6. Kết nối RabbitMQ trong trạng thái chặn?
- 7. Kiểm tra - Chuỗi kết nối bị thiếu
- 8. Cách tốt nhất để kiểm tra trạng thái OleDbConnection
- 9. Kiểm tra kết nối internet trên android
- 10. cách kiểm tra Internet thực được kết nối trong Android?
- 11. Kiểm tra trạng thái của quá trình
- 12. Kiểm tra kết nối WCF
- 13. Có thể phát hiện xem có thiết bị HDMI nào được kết nối bằng C# không?
- 14. Kết nối WPF làAsync Nhận trạng thái
- 15. C# Cổng nối tiếp Kiểm tra xem thiết bị đã được kết nối chưa
- 16. Cách kiểm tra tên mã thiết bị Android?
- 17. Thiết bị LogCat Android bị ngắt kết nối
- 18. android không thể sử dụng hdmi trong tab quảng cáo và cần được thông báo trong tất cả các thiết bị (tối đa) ngay khi hdmi được cắm
- 19. android: Làm cách nào để kết nối điện thoại Android với máy chiếu qua USB/HDMI?
- 20. Làm cách nào để kiểm tra trạng thái hiển thị của EditText trong Android?
- 21. MongoDB: kiểm tra kết nối với DB
- 22. Android: Kiểm tra kết nối đến máy chủ
- 23. Cách kiểm tra trạng thái của bảng phân cảnh?
- 24. Mã trạng thái bị lỗi và phản hồi: cách kiểm tra chống lại nó?
- 25. Thiết bị Wi-Fi ứng dụng Android - Kết nối AP
- 26. Kiểm tra mã trạng thái HTTP trong Selenium
- 27. Sự cố kiểm tra kết nối Internet Android
- 28. Làm cách nào để kiểm tra kết nối svn?
- 29. Trạng thái máy chủ hộp cát kiểm tra như thế nào? ("Không thể kết nối với itunes store")
Chia sẻ mã nhận phát sóng của bạn. Được thiết kế chỉ hoạt động cho các thiết bị Motorola ... ?? –
[Này] (https://stackoverflow.com/a/21383495/1921481) câu trả lời đã làm việc cho tôi, chỉ cần thay thế ý định. Thay vì "android.intent.action.HDMI_PLUGGED", nó phải là "android.intent.action.HDMI_HW_PLUGGED". (Điều này được cho là có nhiều nhận xét hơn cho câu trả lời đó nhưng danh tiếng của tôi không cho phép tôi bình luận). –