[android] Replaced WakeLock with more efficient window flags

This commit is contained in:
Alex Zolotarev 2012-08-10 23:05:10 +03:00 committed by Alex Zolotarev
parent 094f4a1eae
commit 8c2051a2e9
7 changed files with 15 additions and 70 deletions

View file

@ -21,7 +21,6 @@
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<supports-screen android:largeScreens="true"/>

View file

@ -21,7 +21,6 @@
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<supports-screen android:largeScreens="true"/>

View file

@ -21,7 +21,6 @@
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<supports-screen android:largeScreens="true"/>

View file

@ -95,15 +95,12 @@ public class DownloadResourcesActivity extends Activity implements LocationServi
}
else
{
mApplication.disableAutomaticStandby();
finishFilesDownload(mBytesToDownload);
}
}
public void onDownloadClicked(View v)
{
mApplication.disableAutomaticStandby();
mProgress.setVisibility(View.VISIBLE);
mProgress.setMax(mBytesToDownload);
@ -115,8 +112,6 @@ public class DownloadResourcesActivity extends Activity implements LocationServi
public void onPauseClicked(View v)
{
mApplication.enableAutomaticStandby();
mResumeButton.setVisibility(View.VISIBLE);
mPauseButton.setVisibility(View.GONE);
@ -125,8 +120,6 @@ public class DownloadResourcesActivity extends Activity implements LocationServi
public void onResumeClicked(View v)
{
mApplication.disableAutomaticStandby();
mPauseButton.setVisibility(View.VISIBLE);
mResumeButton.setVisibility(View.GONE);
@ -136,8 +129,6 @@ public class DownloadResourcesActivity extends Activity implements LocationServi
public void onTryAgainClicked(View v)
{
mApplication.disableAutomaticStandby();
mProgress.setVisibility(View.VISIBLE);
mTryAgainButton.setVisibility(View.GONE);
mPauseButton.setVisibility(View.VISIBLE);
@ -183,7 +174,6 @@ public class DownloadResourcesActivity extends Activity implements LocationServi
public void finishFilesDownload(int result)
{
mApplication.enableAutomaticStandby();
if (result == ERR_NO_MORE_FILES)
{
if (mCountryName != null && mDownloadCountryCheckBox.isChecked())
@ -278,6 +268,9 @@ public class DownloadResourcesActivity extends Activity implements LocationServi
@Override
protected void onCreate(Bundle savedInstanceState)
{
// Do not turn off the screen while downloading needed resources
getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
super.onCreate(savedInstanceState);
mApplication = (MWMApplication)getApplication();

View file

@ -189,9 +189,17 @@ public class MWMActivity extends NvEventQueueActivity implements LocationService
final boolean isLocationActive = v.isSelected();
if (isLocationActive)
{
getLocationService().stopUpdate(this);
// Enable automatic turning screen off while app is idle
getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
else
{
getLocationService().startUpdate(this);
// Do not turn off the screen while displaying position
getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
v.setSelected(!isLocationActive);
// Store active state of My Position
@ -400,6 +408,10 @@ public class MWMActivity extends NvEventQueueActivity implements LocationService
mApplication = (MWMApplication)getApplication();
// Do not turn off the screen while benchmarking
if (mApplication.nativeIsBenchmarking())
getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
nativeSetString("country_status_added_to_queue", getString(R.string.country_status_added_to_queue));
nativeSetString("country_status_downloading", getString(R.string.country_status_downloading));
nativeSetString("country_status_download", getString(R.string.country_status_download));
@ -474,9 +486,6 @@ public class MWMActivity extends NvEventQueueActivity implements LocationService
@Override
protected void onPause()
{
if (mApplication.nativeIsBenchmarking())
mApplication.enableAutomaticStandby();
getLocationService().stopUpdate(this);
stopWatchingExternalStorage();
@ -487,9 +496,6 @@ public class MWMActivity extends NvEventQueueActivity implements LocationService
@Override
protected void onResume()
{
if (mApplication.nativeIsBenchmarking())
mApplication.disableAutomaticStandby();
View button = findViewById(R.id.map_button_myposition);
if (button.isSelected())
{

View file

@ -10,8 +10,6 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.AssetManager;
import android.os.Build;
import android.os.Environment;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.util.Log;
import android.widget.Toast;
@ -164,28 +162,6 @@ public class MWMApplication extends android.app.Application implements MapStorag
return getFilesDir().getAbsolutePath() + "/";
}
private WakeLock mWakeLock = null;
public void disableAutomaticStandby()
{
if (mWakeLock == null)
{
PowerManager pm = (PowerManager) getSystemService(android.content.Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, TAG);
mWakeLock.acquire();
}
}
public void enableAutomaticStandby()
{
if (mWakeLock != null)
{
mWakeLock.release();
mWakeLock = null;
}
}
static
{
System.loadLibrary("mapswithme");

View file

@ -14,8 +14,6 @@ import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.util.Log;
import android.view.Surface;
@ -59,7 +57,6 @@ public class LocationService implements LocationListener, SensorEventListener, W
/// true when GPS is on
private boolean m_isActive = false;
private WakeLock m_wakeLock = null;
private MWMApplication mApplication = null;
public LocationService(MWMApplication application)
@ -97,26 +94,6 @@ public class LocationService implements LocationListener, SensorEventListener, W
it.next().onCompassUpdated(time, magneticNorth, trueNorth, accuracy);
}
private void disableAutomaticStandby()
{
if (m_wakeLock == null)
{
PowerManager pm = (PowerManager) mApplication.getSystemService(Context.POWER_SERVICE);
m_wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, TAG);
m_wakeLock.acquire();
}
}
private void enableAutomaticStandby()
{
if (m_wakeLock != null)
{
m_wakeLock.release();
m_wakeLock = null;
}
}
/*
private void printLocation(Location l)
{
@ -158,8 +135,6 @@ public class LocationService implements LocationListener, SensorEventListener, W
if (m_wifiScanner == null)
m_wifiScanner = new WifiLocation();
m_wifiScanner.StartScan(mApplication, this);
disableAutomaticStandby();
}
else
observer.onLocationStatusChanged(DISABLED_BY_USER);
@ -169,7 +144,6 @@ public class LocationService implements LocationListener, SensorEventListener, W
m_isActive = true;
observer.onLocationStatusChanged(STARTED);
disableAutomaticStandby();
Location lastKnown = null;
@ -233,7 +207,6 @@ public class LocationService implements LocationListener, SensorEventListener, W
m_lastLocation = null;
m_isActive = false;
enableAutomaticStandby();
}
observer.onLocationStatusChanged(STOPPED);