Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
wichujanin
1 / 1 / 0
Регистрация: 06.03.2014
Сообщений: 7
#1

Выполнений действий в фоне - Программирование Android

02.04.2014, 19:21. Просмотров 986. Ответов 2
Метки нет (Все метки)

Всем привет!
Есть работающий исходник:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    public void PrtSc()
    {
        if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) 
        {
            File sdCard = Environment.getExternalStorageDirectory();
            File directory = new File(sdCard.getAbsolutePath() + "/ScreenShots");
            directory.mkdirs();
            int i = 0;
            String filename;
            File yourFile;
            do {
                i++;
                filename = "screenshot" + i + ".jpg";
                yourFile = new File(directory, filename);
            } while (yourFile.exists());
            Bitmap bitmap;
            View view = getWindow().getDecorView().findViewById(android.R.id.content).getRootView();
            view.setDrawingCacheEnabled(true);
            bitmap = Bitmap.createBitmap(view.getDrawingCache());
            view.setDrawingCacheEnabled(false); 
            OutputStream fileOut = null;
            try {
                fileOut = new FileOutputStream(yourFile);
                bitmap.compress(Bitmap.CompressFormat.JPEG, 50, fileOut);
                fileOut.flush();
                fileOut.close();
            } 
            catch (FileNotFoundException e){
                e.printStackTrace();
            }       
            catch (IOException e){
                e.printStackTrace();
            }   
        }       
    }
.........................................
        OnClickListener oclBtn1 =  new OnClickListener(){
 
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Edit.setText("Нажата кнопка Ок");
                PrtSc();
            }
        };
        
        myBtn1.setOnClickListener(oclBtn1);
При нажатии на кнопку ок делается скриншот и сохраняется в файл, каждый скриншот под уникальным именем.
Как сделать приложение без интерфейса, чтобы при запуске скриншоты делались в фоне?
Как автозапуск делать нашел:
XML
1
2
3
4
<receiver android:name=".onBootReceiver" android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
Помогите плиз, под андроид только недавно пробую писать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 19:21     Выполнений действий в фоне
Посмотрите здесь:

Уведомление в фоне - Программирование Android
как сделать чтобы создавались уведомления от приложения даже когда оно выключено? что то типа как вк когда приложение выключено но оно...

Использование микрофона в фоне - Программирование Android
Добрый день, уважаемые программисты. Суть: Есть приложение, пишет фоном с микрофона. Если мне не изменяют мои знания, микрофон в...

Повторение операции в фоне - Программирование Android
Разобрался с парсингом package com.example.nikolay.vmagaz; import android.os.AsyncTask; import android.os.Bundle; import...

Приложение в фоне, трее - Программирование Android
Подскажите как сделать приложение которое могло висеть в трее и оповещать типа как вк.

Прозрачные кружки на полупрозрачном фоне - Программирование Android
Всем привет . Хочу сделать такой эффект .Как это можно сделать? Пробовал делать прозрачный круг как бэкграунд для view но это не работает .

Приём сообщений от сервера в фоне - Программирование Android
Привет, нужна помощь в структуре. Первый раз работаю с подключением. В общем к делу: 1.Отправляю запрос на сервер 2.У меня есть...

Маленькое изображение на фоне большого - Программирование Android
Как установить на активити большое изображение, а сверху изображение поменьше (например иконку) ? И чтоб всё это было на одном активити

Работа в фоне. Отобразить картинку по url - Программирование Android
Добрый вечер! Не получается решить две ситуации, уже обгуглился, голова пухнет... 1)есть маяк Beacon, когда я запускаю приложение...

Сворачивание приложений и работа в фоне (service) - Программирование Android
Добрый день. Готовлю ТЗ для одного приложения. Мне необходимо выяснить некоторые принципиальные моменты. А я плохо ориентируюсь в правах...

Рисование на фоне основного Layout-а, возможно ли? - Программирование Android
У меня есть пустая Activity и разметка для нее: &lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; ...

Создание радио приложения которое будет продолжать играть в фоне - Программирование Android
Привет! собрал из исходников вот это приложение радио воспроизведение. подскажите как реализовать функцию чтобы приложение продолжало...

Меню выбора на фоне запущенной камеры при старте приложения? - Программирование Android
Как можно сделать чтоб при запуске приложения включалась камера и было вызвано меню которое должно находиться на переднем плане, ну или...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
02.04.2014, 19:25     Выполнений действий в фоне #2
wichujanin, http://habrahabr.ru/post/149875/

http://developer.alexanderklimov.ru/.../broadcast.php

Описываете свой ресивер в xml

Java
1
2
3
4
<receiver android:name=".onBootReceiver" android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
делаете класс-наследник

Java
1
2
3
4
5
class onBootReceiver extends BroadcastReceiver {
onReceive(Context context, Intent intent) {
//Телефон загрузился
}
}
wichujanin
1 / 1 / 0
Регистрация: 06.03.2014
Сообщений: 7
03.04.2014, 00:07  [ТС]     Выполнений действий в фоне #3
Спасибо за ответ, вникаю в статью...
Знающие люди, помогите плиз с каркасом такого приложения, там кода то немного... который день уже с этим бъюсь безрезультатно, много мануалов по сервисам и т.д. для новичка такого как я они сложные
Не сочтите за наглость, буду очень рад исходнику каркаса + манифесту и т.д. Знаю что такое не очень приветствуется, но мне бы очень помог рабочий исходник.
Нужно приложение без визуальных элементов, чтобы при запуске устанавливалось, при перезагрузке автозагружалось. Сам пишу на си, под Windows я бы в такой задаче перехватывал щелчок мыши и колесо прокрутки, получал бы системное время, после каждого вызова PrtSc() сделал бы проверку, чтобы скриншоты делались не чаще 2000 миллисекунд, чтобы ресурсы сильно не расходовать.
Под андроид только пробую писать, как можно тут это красиво реализовать?
После прочтения статьи на ум приходит обрабатывать ACTiON_SCREEN_ON и делать скриншоты с интервалом, как можно сделать лучше?

Добавлено через 3 часа 51 минуту
Хочу внутри сервиса выполнять свою функцию через определенный период.

Взял исходник из примера сервиса, дописал свою функцию, нажал Ctrl + Shift + O:
Код
package org.divenvrsk.examples.service;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

public class RepeatingAlarmService extends BroadcastReceiver {

    public void PrtSc()
    {
        if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) 
        {
            File sdCard = Environment.getExternalStorageDirectory();
            File directory = new File(sdCard.getAbsolutePath() + "/ScreenShots");
            directory.mkdirs();
            int i = 0;
            String filename;
            File yourFile;
            do {
                i++;
                filename = "screenshot" + i + ".jpg";
                yourFile = new File(directory, filename);
            } while (yourFile.exists());
            Bitmap bitmap;
//Ошибка тут:                                !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            View view = getWindow().getDecorView().findViewById(android.R.id.content).getRootView();
            view.setDrawingCacheEnabled(true);
            bitmap = Bitmap.createBitmap(view.getDrawingCache());
            view.setDrawingCacheEnabled(false); 
            OutputStream fileOut = null;
            try {
                fileOut = new FileOutputStream(yourFile);
                bitmap.compress(Bitmap.CompressFormat.JPEG, 50, fileOut);
                fileOut.flush();
                fileOut.close();
            } 
            catch (FileNotFoundException e){
                e.printStackTrace();
            }        
            catch (IOException e){
                e.printStackTrace();
            }    
        }        
    }
    
    @Override
    public void onReceive(Context context, Intent intent) {
     PrtSc();
        Toast.makeText(context, "It's Service Time!", Toast.LENGTH_LONG).show();
        Log.v(this.getClass().getName(), "Timed alarm onReceive() started at time: " + new java.sql.Timestamp(System.currentTimeMillis()).toString());
    }
}
Код
package org.divenvrsk.examples.service;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class OnBootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
            Intent serviceLauncher = new Intent(context, ServiceExample.class);
            context.startService(serviceLauncher);
            Log.v(this.getClass().getName(), "Service loaded while device boot.");
        }
    }
}
Код
package org.divenvrsk.examples.service;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class ServiceActivity extends Activity implements View.OnClickListener {

    Button buttonStart, buttonStop;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        buttonStart = (Button) findViewById(R.id.buttonStart);
        buttonStop = (Button) findViewById(R.id.buttonStop);

        buttonStart.setOnClickListener(this);
        buttonStop.setOnClickListener(this);
    }

    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.buttonStart:
                Log.v(this.getClass().getName(), "onClick: Starting service.");
                startService(new Intent(this, ServiceExample.class));
                break;
            case R.id.buttonStop:
                Log.v(this.getClass().getName(), "onClick: Stopping service.");
                stopService(new Intent(this, ServiceExample.class));
                break;
        }
    }
}
Код
package org.divenvrsk.examples.service;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;
import android.util.Log;
import android.widget.Toast;

public class ServiceExample extends Service {

    public static final int INTERVAL = 10000; // 10 sec
    public static final int FIRST_RUN = 5000; // 5 seconds
    int REQUEST_CODE = 11223344;

    AlarmManager alarmManager;

    @Override
    public void onCreate() {
        super.onCreate();

        startService();
        Log.v(this.getClass().getName(), "onCreate(..)");
    }

    @Override
    public IBinder onBind(Intent intent) {
        Log.v(this.getClass().getName(), "onBind(..)");
        return null;
    }

    @Override
    public void onDestroy() {
        if (alarmManager != null) {
            Intent intent = new Intent(this, RepeatingAlarmService.class);
            alarmManager.cancel(PendingIntent.getBroadcast(this, REQUEST_CODE, intent, 0));
        }
        Toast.makeText(this, "Service Stopped!", Toast.LENGTH_LONG).show();
        Log.v(this.getClass().getName(), "Service onDestroy(). Stop AlarmManager at " + new java.sql.Timestamp(System.currentTimeMillis()).toString());
    }

    private void startService() {

        Intent intent = new Intent(this, RepeatingAlarmService.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, REQUEST_CODE, intent, 0);

        alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.setRepeating(
                AlarmManager.ELAPSED_REALTIME_WAKEUP,
                SystemClock.elapsedRealtime() + FIRST_RUN,
                INTERVAL,
                pendingIntent);

        Toast.makeText(this, "Service Started.", Toast.LENGTH_LONG).show();
        Log.v(this.getClass().getName(), "AlarmManger started at " + new java.sql.Timestamp(System.currentTimeMillis()).toString());
    }
}
Где:
View view = getWindow().getDecorView().findViewById(android.R.id.content).getRootView();
getWindow подчеркивается красным, ошибка: The method getWindow() is undefined for the type RepeatingAlarmService
Как испарвить?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru