시스템 정보 API 가이드
PUBLISHED
개요
Tizen SystemInfo API는 인터페이스와 선택한 시스템 속성에서 정보를 요청하여 하드웨어 장치 상태를 가져오기 위한 메서드를 제공합니다. SystemInfo API를 사용하면 배터리 잔량, 사용 가능한 장치 저장 공간, 버전 번호, 모델 이름, 셀룰러 네트워크 등 장치 정보에 액세스할 수 있습니다. SystemInfo API를 사용하면 선택한 장치의 값 변경에 대한 비동기 알림을 설정할 수 있습니다. 이러한 API를 사용하려면 필요한 사용 권한을 config.xml 파일에 추가합니다(아래 필수 요소 섹션 참조). 애플리케이션이 실행될 때 SystemInfoObject는 Tizen 개체에서 자동으로 인스턴스화됩니다. tizen.systeminfo 개체는 시스템 정보에 대한 액세스를 제공하는 SystemInfo 인터페이스의 인스턴스입니다.
아래 그림에서는 API 개체가 애플리케이션 창 내부에서 구성되는 방법을 보여줍니다.
애플리케이션은 SystemInfo API를 사용하여 다음과 같은 작업을 수행할 수 있습니다.
필수 구성 요소
SystemInfo API에는 시스템 및 민감한 데이터를 처리하기 위한 여러 가지 액세스 수준이 있습니다. config.xml 파일에서 SystemInfo API에 대한 사용 권한을 활성화할 수 있습니다.
- http://tizen.org/api/setting: SystemInfo API의 기능에 대한 액세스를 허용하는 권한
- http://tizen.org/api/system: SystemInfo API의 모든 기능에 대한 액세스를 허용하는 권한
- http://tizen.org/api/systemmanager: imei 번호와 SIM 구독에 대한 액세스를 허용하는 권한
systemmanager 권한을 사용하기 위해 "파트너" 권한 수준이 있어야 합니다. /tools/certificate-generator/patches에서
$patch.bat public
를 실행하여 사용할 수 있습니다.
Tizen IDE 인터페이스를 사용하여 config.xml 파일을 편집하는 것이 좋습니다.
속성 지원 결정
Tizen SystemInfo API는 시스템 속성에 관한 정보를 확보할 수 있도록 지원하는 SystemInfoObject
인터페이스를 제공합니다. SystemInfo API를 사용하여 다 한 장치 상태 세부 정보에 액세스할 수 있습니다.
애플리케이션이 장치별 정보에 액세스해야 하는 경우 getCapabilities 메서드를 사용하여 속성에 대한 지원을 확인해야 합니다. 속성이 지원되는 경우 true를 반환합니다.
var deviceCapabilities; deviceCapabilities = tizen.systeminfo.getCapabilities(); if (deviceCapabilities.wifi) { console.log("wifi is available"); }
PropertyId에 대해 유효한 값:
- 배터리
- Cpu
- 스토리지
- 디스플레이
- 장치 방향
- 빌드
- 로케일
- 네트워크
- WifiNetwork
- CellularNetwork
- SIM
- 주변 기기
장치 속성 검색
장치 속성은 특정 작업 또는 서비스를 완료하기 위해 사용할 수 있는 리소스에 대한 정보를 제공합니다. 인터넷에 액세스하려면 장치에서 액세스할 수 있는 셀룰러 네트워크의 세부 사항을 알아야 할 수 있습니다.
각 속성의 상태를 확인하여 결정할 수 있습니다.
3개의 인수(속성 이름, 성공 콜백 및 오류 콜백)를 허용하는 getPropertyValue 메서드를 사용하여 속성의 현재 상태를 확인할 수 있습니다. 이 메서드를 사용하여 장치에서 지원하는 모든 속성의 현재 상태를 확인할 수 있습니다.
SystemInfoProperty
지원되는 시스템 정보 개체에서 사용된 일반적 추상 인터페이스.
SystemInfoBattery
상당한 양의 전원이 필요한 애플리케이션에 사용할 수 있는 전원을 이해하는 것이 중요합니다. 애플리케이션을 실행할 수 있는지 여부 또는 사용자가 장치에 대한 사용 가능한 전원 수준에 대해 경고해야 할지 여부를 결정할 수 있습니다.
SystemInfoBattery를 사용하여 배터리 수준을 얻을 수 있습니다.
function onSuccessCallback(battery) { alert("Battery Level: " + battery.level + "\nIs Charging: " + battery.isCharging); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("BATTERY", onSuccessCallback, onErrorCallback);
장치에 사용할 수 있는 전원 수준이 0에서 1로 조정됩니다. 여기서 0은 장치에 전원이 들어오지 않았음을 나타내고 1은 최대 용량으로 장치가 충전되었음을 나타냅니다. 임계값 매개 변수를 설정하는 경우 변경에 대한 알림은 전원 수준이 임계값을 교차하는 경우에만 트리거됩니다.
SystemInfoCpu
CPU 부하는 애플리케이션의 효율성을 결정하기 위한 중요한 요소입니다. SystemInfoCpu를 사용하여 시스템에 현재 CPU 부하를 얻을 수 있습니다.
function onSuccessCallback(cpu) { alert("The Load on device is " + cpu.load); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("CPU", onSuccessCallback, onErrorCallback);
SystemInfoStorage
장치에는 연결된 여러 데이터 스토리지 장치가 있을 수 있습니다. 따라서 데이터 저장에 대한 이러한 스토리지 장치 중 하나를 선택하는 옵션을 사용자에게 제공하려고 할 수 있습니다.
SystemInfoStorage 인터페이스는 SystemInfoStorageUnit 개체의 컬렉션을 반환하고 각 스토리지 장치는 용량, 여유 공간, 유형, 스토리지 장치 이동식 여부 등의 세부 사항을 나타냅니다.
function singleStorageInfo(storageunit) { alert("Type: " + storageunit.type + " Total Capacity: " + storageunit.capacity + "\nFree: " + storageunit.availableCapacity + "isRemovable: " + storageunit.isRemovable); } function onErrorCallback(error) { alert("Not supported: " + error.message); } function onSuccessCallback(storage) { alert("Number of storage devices connected " + storage.units.length); var i = 0; //for(i=0; i < storage.units.length; i++) //{ alert("Type: " + storage.units[i].type); singleStorageInfo(storage.units[i]); //} } tizen.systeminfo.getPropertyValue("STORAGE", onSuccessCallback, onErrorCallback);
SystemInfoDisplay
애플리케이션을 런타임에 레이아웃하기 위해 장치의 해상도를 알고 싶을 수 있습니다. SystemInfoDisplay를 사용하여 해상도, dpi, 실제 크기와 디스플레이의 밝기를 얻을 수 있습니다.
function onSuccessCallback(display) { alert("Resolution{w, h}: " + "{" + display.resolutionWidth + ", " + display.resolutionHeight + "}\nDPI{w, h}: " + "{" + display.dotsPerInchWidth + ", " + display.dotsPerInchHeight + "}\nPhysical dimensions{w, h}: " + "{" + display.physicalWidth + ", " + display.physicalHeight + "}\nBrightness: " + display.brightness); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("DISPLAY", onSuccessCallback, onErrorCallback);
SystemInfoDeviceOrientation
현재 장치 디스플레이 방향을 알고 싶을 수 있습니다. SystemInfoDeviceOrientation를 사용하여 현재 장치 방향을 얻을 수 있습니다.
function onSuccessCallback(orientation) { alert("Device Orientation =" + orientation.status); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("DEVICE_ORIENTATION", onSuccessCallback, onErrorCallback);
SystemInfoBuild
SystemInfoBuild를 사용하여 장치 제조업체 및 모델 정보를 얻을 수 있습니다.
function onSuccessCallback(device) { alert("Device Model =" + device.model + " Manufacturer = " + device.manufacturer); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("BUILD", onSuccessCallback, onErrorCallback);
SystemInfoLocale
SystemInfoLocale을 사용하여 현재 장치의 로케일 정보를 얻을 수 있습니다.
function onSuccessCallback(device) { alert("Language =" + device.language + " Country = " + device.country); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("LOCALE", onSuccessCallback, onErrorCallback);
SystemInfoNetwork
네트워크 유형이 사용자의 요구 사항에 따라 적절한 연결 속도를 제공하는지 여부를 알 수 있습니다. SystemInfoNetwork를 사용하여 네트워크 유형을 결정할 수 있습니다.
function onSuccessCallback(network) { alert(" network type: " + network.networkType); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("NETWORK", onSuccessCallback, onErrorCallback);
SystemInfoWifiNetwork
애플리케이션을 장치의 Wi-Fi 네트워크에 액세스하려고 할 수 있습니다. 애플리케이션을 통해 이 네트워크에 액세스하려면 특정 네트워크 세부 정보가 필요합니다. SystemInfoWifiNetwork를 사용하여 네트워크 가용성, SSID, IP 주소 및 신호 강도 결정할 수 있습니다.
function onSuccessCallback(wifi) { alert("Status: " + wifi.status + " SSID: " + wifi.ssid + "\nIP Address: " + wifi.ipAddress + "\nIPV6 Address: " + wifi.ipv6Address + " Signal Strength: " + wifi.signalStrength); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("WIFI_NETWORK", onSuccessCallback, onErrorCallback);
SystemInfoCellularNetwork
대부분의 모바일 장치는 장치를 다른 장치에 연결하고 호출할 수 있는 셀룰러 네트워크에 연결됩니다. 애플리케이션을 통해 이 네트워크에 액세스하려면 특정 네트워크 세부 정보가 필요합니다. SystemInfoCellularNetwork를 사용하여 네트워크 상태, 액세스 포인트, IP 주소, 국가 코드, 셀룰러 ID, imei, 위치 지역 번호 및 장치에 로밍이 활성화되어 있는지 여부를 결정할 수 있습니다.
function onSuccessCallback(cellular) { alert("Status: " + cellular.status + " Access Point: " + cellular.apn + "\nIP Address: " + cellular.ipAddress + "\nIPV6 Address: " + cellular.ipv6Address + " Country code: " + cellular.mcc + "\nNetwork Code: " + cellular.mnc + " Cell ID: " + cellular.cellId + "\nLocation Area code: " + cellular.lac + " Is Roaming: " + cellular.isRoaming) + "\nFlight Mode: " + cellular.isFlightMode + " IMEI: " + cellular.imei); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("CELLULAR_NETWORK", onSuccessCallback, onErrorCallback);
SystemInfoSIM
SystemInfoSIM을 사용하여 운영자 이름 및 mcc 코드와 같은 장치 SIM 카드에 대한 정보를 얻을 수 있습니다.
function onSuccessCallback(sim) { alert("State: " + sim.state + "Operator Name: " + sim.operatorName + " SIM card subscriber number: " + sim.msisdn + "\nIntegrated Circuit Card ID: " + sim.iccid + " Mobile Country Code (MCC): " + sim.mcc + "\nMobile Network Code (MNC): " + sim.mnc + " Mobile Subscription Identification Number (MSIN): " + sim.msin + "\nService Provider Name (SPN): " + sim.spn); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("SIM", onSuccessCallback, onErrorCallback);
SystemInfoPeripheral
SystemInfoPeripheral을 사용하여 장치의 비디오 출력 상태에 대한 정보를 얻을 수 있습니다.
function onSuccessCallback(device) { alert("Video out: " + device.isVideoOutputOn); } function onErrorCallback(error) { alert("Not supported: " + error.message); } tizen.systeminfo.getPropertyValue("PERIPHERAL", onSuccessCallback, onErrorCallback);
시스템 정보 추적
장치 중 하나 이상의 속성 상태가 변경되면 애플리케이션에 영향을 미칠 수 있습니다. 따라서 애플리케이션에 중요한 속성에 대한 업데이트를 확인하는 것이 중요합니다.
이벤트 수신기 추가
AddPropertyValueChangeListener 메서드를 사용하여 시스템 속성 값에서 변경 알림을 구독할 수 있습니다.
The addPropertyValueChangeListener
메서드는 매개 변수로 4개의 인수를 사용합니다. The addPropertyValueChangeListener
메서드의 처음 3개의 매개 변수는 감시하려는 속성 이름, 속성이 변경될 때 호출되는 성공 콜백, 감시하는 동안 장치에서 오류가 발생될 때 호출되는 오류 콜백입니다. 마지막 매개 변수는 선택 사항이며 요청된 속성을 확보하기 위해 다양한 옵션을 포함하는 SystemInfoOptions 유형의 개체를 나타냅니다.
function onSuccessCallback(battery) { console.log("Low battery: " + battery.level); } tizen.systeminfo.addPropertyValueChangeListener("BATTERY", onSuccessCallback, {lowThreshold : 0.2});
tizen.systeminfo.addPropertyValueChangeListener()에서 반환된 모든 식별자는 등록 된 콜백 제거(구독 취소)를 위해 별도로 저장될 수 있습니다.
이벤트 수신기 제거
removePropertyValueChangeListener 메서드를 사용하는 알림 구독을 취소하여 이벤트 수신기를 제거할 수 있습니다.
var id = null; function onSuccessCallback(battery) { console.log("New value for Battery level is " + battery.level); if (id != null) // After receiving the first notification, we clear it tizen.systeminfo.removePropertyValueChangeListener(id); } id = tizen.systeminfo.addPropertyValueChangeListener("BATTERY", onSuccessCallback)
이벤트 수신기에 대한 옵션 설정
요청된 속성 값이 특정 제한을 초과하는 경우에만 알림을 받을 수도 있습니다. SystemInfoOptions은 요청된 속성을 얻기 위한 옵션을 제공합니다. 값이 임계값을 교차하는 경우에만 알림이 트리거되도록 속성에 대한 임계값을 설정합니다.
SystemInfoOptions에는 3가지 속성(highThreshold, lowThreshold 및 timeout)이 포함되어 있습니다. 값이 lowThreshold보다 작거나 highThreshold보다 높은 경우 성공 콜백이 호출됩니다. addPropertyValueChangeListener 메서드가 호출된 이후 시간(밀리초)이 경과되고 시간 제한 값을 초과하는 경우 작업이 중단됩니다.
var id = null; function onSuccessCallback(battery) { alert("Batter Low! Level = " + battery.level); if (id != null) // After receiving the first notification, we clear it tizen.systeminfo.removePropertyValueChangeListener(id); } id = tizen.systeminfo.addPropertyValueChangeListener("BATTERY", onSuccessCallback, {lowThreshold : 0.2});