LoginSignup
2
7

More than 5 years have passed since last update.

Androidでデバイスがどのハードウェア機能を持っているか確認する

Posted at

こんにちはsekitakaです。

Androidでデバイスがどのハードウェア機能(uses-feature)を持っているかをJavaのコードで確認する方法を紹介します。

調べるコード

このコードをAndroidアプリのActivity内の任意の場所に記述すれば調査することができます。

PackageManager pm = getPackageManager();
FeatureInfo[] featureInfos = pm.getSystemAvailableFeatures();
for(FeatureInfo featureInfo : featureInfos){
    Log.d(TAG,"Available Feature: " + featureInfo.name);
}

今回はAndroid TVがandroid.hardware.screen.PORTRAITを持っているのか調べたかったのですが、結果は以下のようになりました。
android.hardware.screen.PORTRAIT はありませんでした。TVは横置きの端末だからでしょうか。

Available Feature: android.software.leanback_only
Available Feature: android.hardware.usb.accessory
Available Feature: android.software.backup
Available Feature: android.hardware.ethernet
Available Feature: android.software.voice_recognizers
Available Feature: android.software.picture_in_picture
Available Feature: android.hardware.type.television
Available Feature: com.google.android.feature.GOOGLE_BUILD
Available Feature: android.hardware.audio.output
Available Feature: android.software.live_tv
Available Feature: android.software.leanback
Available Feature: com.google.android.tv.installed
Available Feature: android.hardware.screen.landscape
Available Feature: android.software.webview
Available Feature: android.hardware.location.network
Available Feature: com.google.android.feature.GOOGLE_EXPERIENCE
Available Feature: com.google.android.feature.EXCHANGE_6_2
Available Feature: android.hardware.location
Available Feature: null

経緯

今回あるアプリのバージョンアップをしようとapkをアップロードしたところ、「サポートされている端末」の数が少し減少しました。

Activityを縦画面固定で使用するためにandroid:screenOrientation="portrait"を追加したために、AndroidManifest.xmlが<uses-feature android:name="android.hardware.screen.PORTRAIT" android:required="true"/>と解釈されたのが原因でした。

そこで <uses-feature android:name="android.hardware.screen.PORTRAIT" android:required="false"/> にしようと思いましたが、android.hardware.screen.PORTRAIT を持たない端末で起動したらどうなるのか確認したくなりました。

端末とハードウェア機能の一覧があればよかったのですが、ぐぐっても見当たらなかったので、android.hardware.screen.PORTRAITを持たなそうなAndroid TVで動作確認しようと思いましたが、果たして本当にandroid.hardware.screen.PORTRAITを持っていないのか確認したくなり調査を行った次第です。

ちなみにアプリ自体はクラッシュすること無く、Android TV上でPORTRAITモードで開きました。顔を傾ければなんとか使えるということです。

2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7