I developed a lockscreen for adnroid. I am trying to use a broadcast receiver to trigger lockscreen activity when the user presses the power button to unlock.
public class Receiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){ Log.w("BAM", "Screen went on"); } else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){ Log.w("BAM","Screen went off"); } }
}
Android manifest: ``
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MyLockScreenActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="MyAdminReceiver" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/admin"/> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver> <receiver android:name=".Receiver"> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.intent.action.ACTION_SHUTDOWN" /> </intent-filter> </receiver> <activity android:name=".LockScreen"></activity> </application>
`
private ActionBar actionBar; private ViewPager viewer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.lockscreen); actionBar = getSupportActionBar(); actionBar.hide(); IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); BroadcastReceiver mReceiver = new Receiver(); registerReceiver(mReceiver, filter); viewer = (ViewPager) findViewById(R.id.viewr); viewer.setAdapter(new MyAdapter(getSupportFragmentManager())); }
but when the user presses the power button, Lockscreen activity starts after 1-3 seconds. Is it advisable to start work when the user first pressed the power button to turn off? How can i do this?
Thank you for your advice. (sorry for my bad english!)
source share