Androidシステム情報の表示

5778 ワード

1.android.os.SystemPropertiesを使用する方法
Androidシステムは主にSystemPropertiesというクラスを通じて、直接ローカルに呼び出してシステム属性の作成、取得、修正を実現する.
Systempropertiesクラスはandroid.osの下にあり、パスは:
/frameworks/base/core/java/android/os/SystemProperties.java

Systempropertiesクラスはandroid.osの下にありますが、このクラスは非表示で、上位プログラム開発では直接使用できません.
Android.os.SystemPropertiesはSDKのライブラリにはありません.
Android SDK\platforms\android-xx\data\layoutlib.jar

ファイルは現在のプロジェクトの追加ライブラリパスに追加され、ソースプログラムでImportできます.
ただしJava Build Path->LibrariesにExternal JARsを追加する方法は直接追加できません
Layoutlib.jarファイルをプロジェクトルートディレクトリにコピーし、Build Pathを右クリックします.
システムのプロパティを取得するには、次の手順に従います.
android.os.SystemProperties.get("ro.build.version.sdk")

ここでkey値はandroidソースディレクトリにあります
android\platform\out\target\product\mt8658sdk\system\build.prop

ファイル
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=IMM76L

ro.build.version.incremental=eng.****.20140829.161823
ro.build.version.sdk=15
ro.build.version.codename=REL
ro.build.version.release=4.0.4
ro.build.date=2014  08  29      16:18:59 CST
ro.build.date.utc=1409300339
ro.build.type=eng
ro.build.user=*****
ro.build.host=iptv-int
ro.build.tags=dev-keys
ro.wifi.channels=
# ro.build.product is obsolete; use ro.product.device
# Do not try to parse ro.build.description or .fingerprint

ro.build.characteristics=default
persist.sys.country=US
persist.sys.language=es
ro.product.HWVersion=YMB.A202.A
ro.product.SWVersion=001.006.711
ro.product.SWVersion.Num=001006711
# end build properties
#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.com.android.dateformat=MM-dd-yyyy
ro.config.ringtone=Ring_Synth_04.ogg
ro.config.notification_sound=pixiedust.ogg
ro.config.alarm_alert=Alarm_Classic.ogg
wifi.interface=wlan0

特別属性:
属性名が「ro.」で始まると、この属性は読み取り専用属性とみなされます.設定すると、属性値は変更できません.
属性名が「persist.」で始まると、この属性を設定すると、その値も/data/propertyに書き込まれます.
属性名が「net.」で始まると、この属性を設定すると、最後に変更した属性名に「net.change」属性が自動的に設定されます.
プロパティを設定するときは、次の点に注意してください.
android.os.SystemProperties.set(key, val)

key値のネーミング接頭辞は
android\platform\system\core\init

に定義された接頭辞は、システム属性設定を行うプログラムにもsystemまたはroot権限が必要です.
androidプログラムの権限をsystem権限に上げるにはどうすればいいですか?方法は次のとおりです.
1、AndroidManifest.xmlでmanifestに加入する
android:sharedUserId="android.uid.system"

2、Android.mkで、�
LOCAL_CERTIFICATE := XXX

変更
LOCAL_CERTIFICATE :=platform

2.TelephonyManager携帯電話情報の取得
       TelephonyManager tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);

		/*
		 *     : 1.tm.CALL_STATE_IDLE=0     2.tm.CALL_STATE_RINGING=1   
		 * 3.tm.CALL_STATE_OFFHOOK=2   
		 */
		tm.getCallState();// int

		/*
		 *     :
		 */
		tm.getCellLocation();// CellLocation

		/*
		 *      ID: GSM    IMEI   CDMA    MEID. Return null if device ID is not
		 * available.
		 */
		tm.getDeviceId();// String

		/*
		 *         :   :the IMEI/SV(software version) for GSM phones. Return
		 * null if the software version is not available.
		 */
		tm.getDeviceSoftwareVersion();// String

		/*
		 *    : GSM    MSISDN. Return null if it is unavailable.
		 */
		tm.getLine1Number();// String

		/*
		 *         :   :List<NeighboringCellInfo>
		 *     :android.Manifest.permission#ACCESS_COARSE_UPDATES
		 */
		tm.getNeighboringCellInfo();// List<NeighboringCellInfo>

		/*
		 *   ISO      ,       。   :             。  CDMA          。
		 */
		tm.getNetworkCountryIso();// String

		/*
		 * MCC+MNC(mobile country code + mobile network code)   :             。
		 *  CDMA          。
		 */
		tm.getNetworkOperator();// String

		/*
		 *        current registered operator(        )      :             。
		 *  CDMA          。
		 */
		tm.getNetworkOperatorName();// String

		/*
		 *          :   : NETWORK_TYPE_UNKNOWN        0 NETWORK_TYPE_GPRS GPRS  
		 * 1 NETWORK_TYPE_EDGE EDGE   2 NETWORK_TYPE_UMTS UMTS   3
		 * NETWORK_TYPE_HSDPA HSDPA   8 NETWORK_TYPE_HSUPA HSUPA   9
		 * NETWORK_TYPE_HSPA HSPA   10 NETWORK_TYPE_CDMA CDMA  ,IS95A   IS95B. 4
		 * NETWORK_TYPE_EVDO_0 EVDO  , revision 0. 5 NETWORK_TYPE_EVDO_A EVDO  ,
		 * revision A. 6 NETWORK_TYPE_1xRTT 1xRTT   7
		 */
		tm.getNetworkType();// int

		/*
		 *     :   : PHONE_TYPE_NONE     PHONE_TYPE_GSM GSM   PHONE_TYPE_CDMA
		 * CDMA  
		 */
		tm.getPhoneType();// int

		/*
		 * Returns the ISO country code equivalent for the SIM provider's
		 * country code.   ISO   ,     SIM     。
		 */
		tm.getSimCountryIso();// String

		/*
		 * Returns the MCC+MNC (mobile country code + mobile network code) of
		 * the provider of the SIM. 5 or 6 decimal digits.
		 *   SIM               .5 6       . SIM       
		 * SIM_STATE_READY(  getSimState()  ).
		 */
		tm.getSimOperator();// String

		/*
		 *      :   :    、   SIM        SIM_STATE_READY(  getSimState()  ).
		 */
		tm.getSimOperatorName();// String

		/*
		 * SIM     :     :READ_PHONE_STATE
		 */
		tm.getSimSerialNumber();// String

		/*
		 * SIM     : SIM_STATE_UNKNOWN      0 SIM_STATE_ABSENT     1
		 * SIM_STATE_PIN_REQUIRED     ,     PIN    2 SIM_STATE_PUK_REQUIRED
		 *     ,     PUK    3 SIM_STATE_NETWORK_LOCKED     ,     PIN    4
		 * SIM_STATE_READY      5
		 */
		tm.getSimState();// int

		/*
		 *      ID:   :IMSI(         ) for a GSM phone.     :READ_PHONE_STATE
		 */
		tm.getSubscriberId();// String

		/*
		 *             ,          :READ_PHONE_STATE
		 */
		tm.getVoiceMailAlphaTag();// String

		/*
		 *         :     :READ_PHONE_STATE
		 */
		tm.getVoiceMailNumber();// String

		/*
		 * ICC     
		 */
		tm.hasIccCard();// boolean

		/*
		 *     : ( GSM   )
		 */
		tm.isNetworkRoaming();