Saturday, June 24, 2006

Tips dan Trik mengetahui sisa energi baterai pada PocketPC

Aristian Wikarsa
203114795

Mobilitas adalah salah satu kunci utama kenapa banyak orang memilih menggunakan Notebook, PocketPC dan device lain sejenisnya. Sayangnya, sampai sekarang mobilitas masih terhalang masalah penggunaan energi yang terbatas (memakai baterai). Sebagai programmer yang memperhatikan aspek mobilitas dalam program-program yang dibuat, hendaknya kita patut pula memperhatikan masalah keterbatasan energi. Bagaimana jika seorang user kehabisan energi baterai saat sedang bekerja dengan aplikasi yang kita buat (sebut saja word processing atau aplikasi spreadsheet). Bagaimana jika saat user bermain game atau menggunakan kamera baterai tiba-tiba habis. Apakah data-data seperti dokumen yang sedang terbuka itu dapat terselamatkan, atau apakah game yang sedang dimainkan oleh user tiba-tiba mati padahal user tersebut sudah masuk level yang sulit dan lupa men-save game tersebut. Oleh karena itu sudah sepatutnya kita memberikan informasi seperti status atau kondisi baterai kepada user. Dengan mengetahui status dan kondisi baterai, kita dapat mencegah hal-hal yang tidak diinginkan seperti melakukan auto-save ketika sisa energi baterai sudah mencapai level tertentu. Dengan demikian tentu saja user yang menggunakan aplikasi kita akan menjadi lebih nyaman dengan fitur yang kita berikan ini.

Dalam .NET Framework 2.0 untuk mendapatkan informasi sisa energi baterai dapat dilakukan dengan sangat mudah seperti berikut:

PowerStatus ps = SystemInformation.PowerStatus;
BatteryLifePercentTextBox.Text = (ps.BatteryLifePercent * 100) + "%";


Property PowerStatus dari Class SystemInformation dapat digunakan untuk mendapatkan semua informasi mengenai keadaan baterai. Ada 5 property dari PowerStatus yaitu BatteryChargeStatus, BatteryFullLifetime, BatteryLifePercent, BatteryLifeRemaining dan PowerLineStatus. Berikut ini akan dijelaskan kegunaan dan sifat dari masing-masing property.
BatteryChargeStatus dapat berisi 6 kemungkinan nilai yaitu: Charging, Critical, High, Low, NoSystemBattery, Unknown. Nilai kembalian NoSystemBattery menandakan bahwa tidak ada baterai yang terdapat dalam sistem (seperti pada komputer desktop).
PowerLineStatus dapat berisi Online (menggunakan power AC), Offline (menggunakan power baterai) dan Unknown.
Untuk BatteryFullLifetime dan BatteryLifeRemaining digunakan untuk mendapatkan waktu sisa hidup baterai dalam satuan detik (BatteryLifeRemaining) dan berapa waktu yang dibutuhkan untuk menghabiskan baterai dari kondisi baterai penuh (BatteryFullLifetime) dalam hitungan detik.
BatteryLifePercent digunakan untuk mengetahui sisa kapasitas baterai yang memiliki nilai kembalian antara 0 sampai dengan 1. Cukup kalikan saja dengan 100 untuk mendapatkan nilai dalam satuan persen (%).
Berikut ini akan diberikan potongan source code procedure untuk mengupdate informasi baterai untuk ditampilkan kepada user.

private void UpdatePowerInfo()
{
  PowerStatus ps = SystemInformation.PowerStatus;

  BatteryChargeStatusTextBox.Text = ps.BatteryChargeStatus.ToString();
  
  BatteryLifePercentTextBox.Text = (ps.BatteryLifePercent * 100) + "%";
  PowerLineStatusTextBox.Text = ps.PowerLineStatus.ToString();

  TimeSpan ts = new TimeSpan(0, 0, ps.BatteryLifeRemaining);
  if (ps.BatteryLifeRemaining > 0)
    BatteryLifeRemainingTextBox.Text = ts.ToString();
  else BatteryLifeRemainingTextBox.Text = "Unknown";

  ts = new TimeSpan(0, 0, ps.BatteryFullLifetime);
  if (ps.BatteryFullLifetime > 0)
    BatteryFullLifetimeTextBox.Text = ts.ToString();
  else BatteryFullLifetimeTextBox.Text = "Unknown";

  PowerModeToolStripStatusLabel.Text = ((ps.PowerLineStatus ==   PowerLineStatus.Online) ? "AC" : "Battery");
}

Sebagai tambahan kita dapat menambahkan event PowerModeChanged untuk dapat merespon langsung terhadap perubahan power pada device (intermesso sedikit: barusan saja lampu saya mati dan kemudian auto-recover nya Microsoft Word dan Visual Studio 2005 bekerja. Selain itu browser Opera juga menawarkan untuk membuka session browsing terakhir. Sungguh ngga bohong. Beginilah seharusnya setiap aplikasi dibuat!!! Saya jadi penasaran apakah Delphi ada fitur recovery seperti ini atau tidak). Dengan digunakannya event ini maka anda dapat langsung merespon tindakan apa yang harus dilakukan jika level energi baterai sudah menipis, misalnya membuat save-copy dari dokumen yang terbuka, men-save sesi sebuah web browser (seperti fitur save session nya browser Opera) atau menurunkan kualitas gambar game untuk mengurangi penggunaan energi baterai. Untuk penggunaan event tersebut dapat langsung dilihat pada potongan source code berikut ini.

// Pada Main Entry Program Anda
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);

// Pada Class Utama Anda
void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
  UpdatePowerInfo();

  // atau tambahkan penanganan event lainnya seperti misalnya auto-save
}
Dengan demikian mulai sekarang semua aplikasi yang anda buat dapat ditambahkan fitur auto-recovery atau berbagai macam fitur lainnya sesuai imajinasi dan kreatifitas masing-masing. Untuk source code VB dari contoh program yang sesungguhnya dapat anda download di URL: http://download.microsoft.com/download/4/1/e/41e8f2c1-1bf7-419f-b31b-06122d090a49/TakeItWithYouVB.msi . Satu lagi catatan terakhir bahwa trik ini bukan cuma bisa dilakukan pada PocketPC saja tetapi bisa juga diterapkan pada Desktop PC maupun Notebook. Sekian. Terima Kasih.

Source:
www.pocketpcdn.com
http://msdn.microsoft.com/coding4fun/inthebox/mobile1/default.aspx
http://msdn2.microsoft.com/en-us/library/microsoft.win32.systemevents.powermodechanged.aspx




 

No comments: