diff --git a/src/org/geometerplus/zlibrary/core/application/ZLApplication.java b/src/org/geometerplus/zlibrary/core/application/ZLApplication.java index 70093a1f5..9ef81d5ed 100644 --- a/src/org/geometerplus/zlibrary/core/application/ZLApplication.java +++ b/src/org/geometerplus/zlibrary/core/application/ZLApplication.java @@ -212,6 +212,10 @@ public abstract class ZLApplication { } } + public int getBatteryLevel() { + return (myWindow != null) ? myWindow.getBatteryLevel() : 0; + } + //Menu static class Menu { public interface Item { diff --git a/src/org/geometerplus/zlibrary/core/application/ZLApplicationWindow.java b/src/org/geometerplus/zlibrary/core/application/ZLApplicationWindow.java index 5eb74023c..96c3dc8a9 100644 --- a/src/org/geometerplus/zlibrary/core/application/ZLApplicationWindow.java +++ b/src/org/geometerplus/zlibrary/core/application/ZLApplicationWindow.java @@ -46,4 +46,6 @@ abstract public class ZLApplicationWindow { abstract protected boolean canRotate(); abstract protected void close(); + + abstract protected int getBatteryLevel(); } diff --git a/src/org/geometerplus/zlibrary/ui/android/application/ZLAndroidApplicationWindow.java b/src/org/geometerplus/zlibrary/ui/android/application/ZLAndroidApplicationWindow.java index 0f721d8fa..fca3ea893 100644 --- a/src/org/geometerplus/zlibrary/ui/android/application/ZLAndroidApplicationWindow.java +++ b/src/org/geometerplus/zlibrary/ui/android/application/ZLAndroidApplicationWindow.java @@ -128,4 +128,12 @@ public final class ZLAndroidApplicationWindow extends ZLApplicationWindow { public void close() { ((ZLAndroidLibrary)ZLAndroidLibrary.Instance()).finish(); } + + private int myBatteryLevel; + protected int getBatteryLevel() { + return myBatteryLevel; + } + public void setBatteryLevel(int percent) { + myBatteryLevel = percent; + } } diff --git a/src/org/geometerplus/zlibrary/ui/android/library/ZLAndroidActivity.java b/src/org/geometerplus/zlibrary/ui/android/library/ZLAndroidActivity.java index 2f598fe3e..3fc748ce5 100644 --- a/src/org/geometerplus/zlibrary/ui/android/library/ZLAndroidActivity.java +++ b/src/org/geometerplus/zlibrary/ui/android/library/ZLAndroidActivity.java @@ -24,7 +24,7 @@ import java.io.File; import android.net.Uri; import android.app.Activity; import android.os.Bundle; -import android.content.Intent; +import android.content.*; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.view.*; @@ -100,6 +100,8 @@ public abstract class ZLAndroidActivity extends Activity { ZLApplication.Instance().openFile(ZLFile.createFileByPath(fileToOpen)); } ZLApplication.Instance().repaintView(); + + registerReceiver(myBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); } @Override @@ -255,4 +257,11 @@ public abstract class ZLAndroidActivity extends Activity { myChangeCounter = 0; } } + + BroadcastReceiver myBatteryInfoReceiver = new BroadcastReceiver() { + public void onReceive(Context context, Intent intent) { + final int level = intent.getIntExtra("level", 100); + ((ZLAndroidApplication)getApplication()).myMainWindow.setBatteryLevel(level); + } + }; }