Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 56

не срабатывает будильник при заблокированном экране

24.12.2016, 18:48. Показов 1798. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
в манифесте
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
   <activity android:name=".alarmclock.AlarmAlert" android:label="@string/alert_title"
            android:excludeFromRecents="true"
            android:theme="@android:style/Theme.Dialog"
            android:launchMode="singleTask"
            android:showOnLockScreen="true"
            android:taskAffinity=":AlarmAlert"
            android:screenOrientation="sensorPortrait"
            android:configChanges="orientation|keyboardHidden|keyboard|navigation" />
активити
[JAVA]
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
AlarmAlertWakeLock.acquire(this);
Log.v("AlarmAlert.onCreate()");
setWindowSettings();
releaseWakeLock();
acquireWakeLock();
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.type = WindowManager.LayoutParams.TYPE_SYSTEM_A LERT;
lp.token = null;
getWindow().setAttributes(lp);
getWindow().addFlags(WindowManager.Layou tParams.FLAG_DIM_BEHIND);
mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVIC E);
Intent i = getIntent();
mAlarmId = i.getIntExtra(Alarms.ID, -1);
Alarms.getAlarm(getContentResolver(), this, mAlarmId);
mKlaxon = new AlarmKlaxon();
mKlaxon.postPlay(this, mAlarmId);
setTitleFromIntent(i);
Alarms.disableSnoozeAlert(AlarmAlert.thi s);
Alarms.disableAlert(AlarmAlert.this, mAlarmId);
Alarms.setNextAlert(this);
mKlaxon.setKillerCallback(new AlarmKlaxon.KillerCallback() {
public void onKilled() {
if (Log.LOGV) Log.v("onKilled()");
updateSilencedText();
mSnoozeButton.setEnabled(false);
dismiss();
mState = KILLED;
}
});
updateLayout();
SharedPreferences settings = getSharedPreferences(AlarmClock.PREFEREN CES, 0);
if (settings.getBoolean(AlarmClock.PREF_SHA KE_SNOOZE, true)) {
mShakeListener = new ShakeListener(this);
mShakeListener.setOnShakeListener(new ShakeListener.OnShakeListener() {
public void onShake() {
snooze();
if (mCaptchaSnooze == 0)
finish();
}
});
}
}
private void setTitleFromIntent(Intent i) {
mLabel = i.getStringExtra(Alarms.LABEL);
if (mLabel == null || mLabel.length() == 0) {
mLabel = getString(R.string.default_label);
}
setTitle(mLabel);
}
private void setWindowSettings()
{
getWindow().addFlags(WindowManager.Layou tParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.Layou tParams.FLAG_TURN_SCREEN_ON);
getWindow().addFlags(WindowManager.Layou tParams.FLAG_KEEP_SCREEN_ON);

int currentOrientation = getResources().getConfiguration().orient ation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE)
{
setRequestedOrientation(ActivityInfo.SCR EEN_ORIENTATION_SENSOR_LANDSCAPE);
} else
{
setRequestedOrientation(ActivityInfo.SCR EEN_ORIENTATION_SENSOR_PORTRAIT);
}}

public void acquireWakeLock()
{
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUS ES_WAKEUP
| PowerManager.ON_AFTER_RELEASE
| PowerManager.PARTIAL_WAKE_LOCK, "alarming_wakelock");
mWakeLock.acquire();
}
public void releaseWakeLock()
{
if (mWakeLock != null)
{
if (mWakeLock.isHeld())
{
mWakeLock.release();
mWakeLock = null;
}
}
}
private void updateSilencedText() {
TextView silenced = (TextView) findViewById(R.id.silencedText);
silenced.setText(getString(R.string.alar m_alert_alert_silenced,
mDuration / 1000*60));
silenced.setVisibility(View.VISIBLE);
}

private void updateLayout() {
setContentView(R.layout.alarm_alert);
AlarmAlertWakeLock.acquire(this);
LayoutInflater mFactory = LayoutInflater.from(this);
SharedPreferences settings =
getSharedPreferences(AlarmClock.PREFEREN CES, 0);
int face = settings.getInt(AlarmClock.PREF_CLOCK_FA CE, 0);
if (face < 0 || face >= AlarmClock.CLOCKS.length) {
face = 0;
}
View clockLayout =
(View) mFactory.inflate(AlarmClock.CLOCKS[face], null);
ViewGroup clockView = (ViewGroup) findViewById(R.id.clockView);
clockView.addView(clockLayout);
if (clockLayout instanceof DigitalClock) {
((DigitalClock) clockLayout).setAnimate();
}
mSnoozeButton = (Button) findViewById(R.id.snooze);
if (mSnooze > 0) {
mSnoozeButton.requestFocus();
mSnoozeButton.setVisibility(View.VISIBLE );
}
else { // hide the snooze button if snooze disabled for this alarm
mSnoozeButton.setVisibility(View.GONE);
}
if (mState == KILLED) {
updateSilencedText();
mSnoozeButton.setEnabled(false);
} else {
mSnoozeButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
snooze();
if (mCaptchaSnooze == 0)
finish();
}
});
}
findViewById(R.id.dismiss).setOnClickLis tener(
new Button.OnClickListener() {
public void onClick(View v) {
dismiss();
if (mCaptchaDismiss == 0)
finish();
}
});
}
private void snooze() {
if (mState != UNKNOWN) {
return;
}
if (mSnooze == 0) { // snooze disabled for this alarm
return;
}
if (mCaptchaSnooze != 0 && !mCaptchaDone) {
show_captcha(mCaptchaSnooze, SNOOZE);
return;
}
final long snoozeTime = System.currentTimeMillis()
+ (1000 * 60 * mSnooze);
final long nextAlarm =
Alarms.calculateNextAlert(AlarmAlert.thi s).getAlert();
String displayTime = null;
if (nextAlarm < snoozeTime) {
final Calendar c = Calendar.getInstance();
c.setTimeInMillis(nextAlarm);
displayTime = getString(R.string.alarm_alert_snooze_no t_set,
Alarms.formatTime(AlarmAlert.this, c));
mState = DISMISS;
} else {
Alarms.saveSnoozeAlert(AlarmAlert.this, mAlarmId, snoozeTime,
mLabel);
Alarms.setNextAlert(AlarmAlert.this);
displayTime = getString(R.string.alarm_alert_snooze_se t,
mSnooze);
mState = SNOOZE;
}
Log.v(displayTime);
Toast.makeText(AlarmAlert.this, displayTime, Toast.LENGTH_LONG).show();
mKlaxon.stop(this, mState == SNOOZE);
releaseLocks();
finish();
}
private void dismiss() {
if (mState != UNKNOWN) {
return;
}
if (mCaptchaDismiss != 0 && !mCaptchaDone) {
show_captcha(mCaptchaDismiss, DISMISS);
return;
}
mState = DISMISS;
mKlaxon.stop(this, false);
releaseLocks();
finish();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
AlarmAlertWakeLock.acquire(this);
if (Log.LOGV) Log.v("AlarmAlert.OnNewIntent()");
mState = UNKNOWN;
mSnoozeButton.setEnabled(true);
disableKeyguard();

mAlarmId = intent.getIntExtra(Alarms.ID, -1);
mKlaxon.postPlay(this, mAlarmId);
setTitleFromIntent(intent);
TextView silenced = (TextView)findViewById(R.id.silencedText );
silenced.setVisibility(View.GONE);

Alarms.setNextAlert(this);
setIntent(intent);
}
@Override
protected void onResume() {
super.onResume();
if (Log.LOGV) Log.v("AlarmAlert.onResume()");
disableKeyguard();

if (mShakeListener != null)
mShakeListener.resume();
}
@Override
protected void onStop() {
super.onStop();
AlarmAlertWakeLock.acquire(this);
if (Log.LOGV) Log.v("AlarmAlert.onStop()");
snooze();
releaseLocks();
if (mShakeListener != null)
mShakeListener.pause();
}
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
updateLayout();
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
boolean up = event.getAction() == KeyEvent.ACTION_UP;
boolean dismiss = false;
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_DPAD_DOWN:
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_DPAD_RIGHT:
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENDCALL:
break;
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
dismiss = true;
default:
if (mState == UNKNOWN && up) {
if (dismiss) {
dismiss();
} else {
snooze();
}
}
return true;
}
return super.dispatchKeyEvent(event);
}

private synchronized void enableKeyguard() {
if (mKeyguardLock != null) {
mKeyguardLock.reenableKeyguard();
mKeyguardLock = null;
}
}

private synchronized void disableKeyguard() {
if (mKeyguardLock == null) {
mKeyguardLock = mKeyguardManager.newKeyguardLock(Log.LOG TAG);
mKeyguardLock.disableKeyguard();
}
}
private synchronized void releaseLocks() {
AlarmAlertWakeLock.release();
enableKeyguard();
}

public void reportAlarm(
int idx, boolean enabled, int hour, int minutes,
Alarms.DaysOfWeek daysOfWeek, boolean vibrate, String message, String alert,
int snooze, int duration, int delay, boolean vibrate_only,
int volume, int crescendo,
int captcha_snooze, int captcha_dismiss
) {
mSnooze = snooze;
mCaptchaSnooze = captcha_snooze;
mCaptchaDismiss = captcha_dismiss;
mDuration = duration;

updateLayout();
}

private void show_captcha(int captcha_type, int which_state)
{
CaptchaInterface captcha;
if (captcha_type == Alarms.CAPTCHA_TYPE_PUZZLE) {
captcha = new PuzzleCaptcha(this);
}
else
if (captcha_type == Alarms.CAPTCHA_TYPE_MATH) {
captcha = new MathCaptcha(this);
}
else
return;
if (mCaptchaShown) return;
mCaptchaShown = true;
final int which = which_state;
captcha.setOnCorrectListener(new CaptchaInterface.OnCorrectListener() {
public void onCorrect() {
mCaptchaDone = true;
if (which == SNOOZE) {
snooze();
}
else
if (which == DISMISS) {
dismiss();
}
finish();
}
});
((Dialog)captcha).setOnDismissListener(n ew DialogInterface.OnDismissListener() {
public void onDismiss(DialogInterface dialog) {
mCaptchaShown = false;
}
});
captcha.show();
}
} [JAVA]
Будильник не срабатывает при заблокированном экране. Помогите найти ошибку.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2016, 18:48
Ответы с готовыми решениями:

Вибрация при заблокированном экране
Здравствуйте! Я использую вибрацию в своем приложении так: String vibratorService = Context.VIBRATOR_SERVICE; ...

Выполнение скрипта при заблокированном экране
Добрый день, форумчане! Подскажите, пожалуйста, возможно ли сделать так, чтобы скрипт в Autoit выполнялся при заблокированном экране? ...

Программа которая снимала бы видео на телефон при заблокированном экране и пока не разблокируешь нельзя удалить
Желательно чтоб включалась или голосом (ну я слово она включилась) или зажатием клавиш в кармане. И или же подтверждала что включилась или...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.12.2016, 18:48
Помогаю со студенческими работами здесь

Не срабатывает будильник
Все работало нормально. Но в какой то момент раз и будильник внезапно перестал срабатывать... Тупо ставишь его на конкретное время без...

PCF8583 не срабатывает будильник
Пытаюсь сделать будильник для микроконтроллера на основе часов реального времени PCF8583, программирую на PIC. Собрал тестовую плату с...

Как добавить мелодию по выбору в будильник, когда он срабатывает?
Вот исходник будильника,нужно сделать так,чтобы был выбор мелодий,которая будет воспроизводиться при срабатывании

Как при заблокированном копировании из PDF файла извлечь текст?
Как при заблокированном копировании из PDF файла извлечь текст, да так, чтобы ни одна буква и символ не превратились в иероглифы. вот...

Защита Windows от взлома пароля (при включенном компе и заблокированном входе в учётку)
Всем привет. Задался таким вопросом: можно ли как-то защитить винду от взлома пароля в учётную запись? При том, что взлом пароля...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru