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

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

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

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

02.04.2014, 19:21. Просмотров 1077. Ответов 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>
Помогите плиз, под андроид только недавно пробую писать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 19:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выполнений действий в фоне (Программирование Android):

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

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

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

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

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

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

2
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
02.04.2014, 19:25 #2
wichujanin, http://habrahabr.ru/post/149875/

http://developer.alexanderklimov.ru/android/theory/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) {
//Телефон загрузился
}
}
1
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
Как испарвить?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2014, 00:07
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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