JavaScript プログラミング講座

 

Battery Status API について

 


■ Battery Status API について

 
 
バッテリー関連の情報を、取得する事ができます。
 

■ブラウザが Battery Status API をサポートしているか調べる

 
navigator.getBattery が真であるか比較します。
 
 
 

 

BatteryManager について

 
 
 


BatteryManager オブジェクトを取得する

 
navigator.getBattery() メソッドを使用します。
 
navigator.getBattery( ) :Promise
引数 Voidなし
戻り値 Promise新しい Promise オブジェクトが得られる。
 
■戻り値(Promise)
 
結果を受け取るには、then() メソッドを使用します。
 
非同期で動作します。
 
■取得例
 
BatteryManager オブジェクトを取得する

// ------------------------------------------------------------
// BatteryManager オブジェクトを取得する
// ------------------------------------------------------------
// 取得を開始する
var promise = navigator.getBattery();

// 結果を受け取る(非同期)
promise.then(

	// ------------------------------------------------------------
	// 成功時に実行されるコールバック関数
	// ------------------------------------------------------------
	function success(battery_manager){
		// 出力テスト
		console.log(battery_manager);
	},

	// ------------------------------------------------------------
	// 失敗時に実行されるコールバック関数
	// ------------------------------------------------------------
	function failure(reason){
		// 出力テスト
		console.log(reason);
	}
);
 

BatteryManager のプロパティについて

 
■読み取り可能なプロパティ一覧
 
プロパティ名説明
chargingBoolean充電中なら true 、放電中なら false
chargingTimeNumberバッテリーが満たされるまでに必要な充電時間(単位:秒)
放電中なら +Infinity
dischargingTimeNumberバッテリーが枯渇するまでの残り放電時間(単位:秒)
充電中なら +Infinity
levelNumberバッテリーの貯蓄率(0.0 ~ 1.0)
 
取得例
 
バッテリーの情報を取得する

// ------------------------------------------------------------
// BatteryManager オブジェクトを取得する
// ------------------------------------------------------------
// 取得を開始する
var promise = navigator.getBattery();

// 結果を受け取る(非同期)
promise.then(function (battery_manager){

	// ------------------------------------------------------------
	// 充電中であるか
	// ------------------------------------------------------------
	console.log( battery_manager.charging );

	// ------------------------------------------------------------
	// 満充電までに必要な時間(秒)
	// ------------------------------------------------------------
	console.log( battery_manager.chargingTime );

	// ------------------------------------------------------------
	// 枯渇するまでの残り時間(秒)
	// ------------------------------------------------------------
	console.log( battery_manager.dischargingTime );

	// ------------------------------------------------------------
	// バッテリーの貯蓄率(0.0 ~ 1.0)
	// ------------------------------------------------------------
	console.log( battery_manager.level );

});
 

BatteryManager のイベントについて

 
以下のイベントに対応しています。
 
イベント名 解説
onchargingchange Event charging プロパティが変化した
onchargingtimechange Event chargingTime プロパティが変化した
ondischargingtimechange Event dischargingTime プロパティが変化した
onlevelchange Event level プロパティが変化した
 
■使用例
 
BatteryManager のプロパティの変化を監視する(イベントプロパティ)

// ------------------------------------------------------------
// BatteryManager オブジェクトを取得する
// ------------------------------------------------------------
// 取得を開始する
var promise = navigator.getBattery();

// 結果を受け取る(非同期)
promise.then(function (battery_manager){

	// ------------------------------------------------------------
	// charging プロパティが変化すると実行されるイベント
	// ------------------------------------------------------------
	battery_manager.onchargingchange = function (e){
		console.log( battery_manager.charging );
	};

	// ------------------------------------------------------------
	// chargingTime プロパティが変化すると実行されるイベント
	// ------------------------------------------------------------
	battery_manager.onchargingtimechange = function (e){
		console.log( battery_manager.chargingTime );
	};

	// ------------------------------------------------------------
	// dischargingTime プロパティが変化すると実行されるイベント
	// ------------------------------------------------------------
	battery_manager.ondischargingtimechange = function (e){
		console.log( battery_manager.dischargingTime );
	};

	// ------------------------------------------------------------
	// level プロパティが変化すると実行されるイベント
	// ------------------------------------------------------------
	battery_manager.onlevelchange = function (e){
		console.log( battery_manager.level );
	};

});
 
BatteryManager のプロパティの変化を監視する(イベントリスナー)

// ------------------------------------------------------------
// BatteryManager オブジェクトを取得する
// ------------------------------------------------------------
// 取得を開始する
var promise = navigator.getBattery();

// 結果を受け取る(非同期)
promise.then(function (battery_manager){

	// ------------------------------------------------------------
	// charging プロパティが変化すると実行されるイベント
	// ------------------------------------------------------------
	battery_manager.addEventListener( "chargingchange" , function(e){
		console.log( battery_manager.charging );
	});

	// ------------------------------------------------------------
	// chargingTime プロパティが変化すると実行されるイベント
	// ------------------------------------------------------------
	battery_manager.addEventListener( "chargingtimechange" , function(e){
		console.log( battery_manager.chargingTime );
	});

	// ------------------------------------------------------------
	// dischargingTime プロパティが変化すると実行されるイベント
	// ------------------------------------------------------------
	battery_manager.addEventListener( "dischargingtimechange" , function(e){
		console.log( battery_manager.dischargingTime );
	});

	// ------------------------------------------------------------
	// level プロパティが変化すると実行されるイベント
	// ------------------------------------------------------------
	battery_manager.addEventListener( "levelchange" , function(e){
		console.log( battery_manager.level );
	});

});