powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Фонарик с исходниками
11 сообщений из 11, страница 1 из 1
Фонарик с исходниками
    #39116996
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скачатьwadman.ru/apk/smalllight.apk


Маленький, легкий, шустрый и работает если не на всех, то на большинстве моделей. В крайнем случае пытается эмулировать подсветку экраном.
Функционал задавал следующий: запустил фонарик (вспышка работает), заблокировал телефон (вспышка погасла), когда нужен фонарик - разблокировал (вспышка работает). То есть чтоб работал по физической кнопке.

Исходник
Код: 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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
package ru.wadman.smalllight;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
import android.widget.RelativeLayout;

import java.io.IOException;

public class MyActivity extends Activity implements SurfaceHolder.Callback, View.OnClickListener {

    private final static String SETTING_NAME = "default";
    private final static String SETTING_FLASH = "isFlash";

    private SurfaceHolder mHolder;
    private Camera mCamera = null;
    private SurfaceView mPreview;
    private boolean isFlashMode = true;
    private boolean isFlashAvail = false;
    private float mBrightness;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        RelativeLayout layout = (RelativeLayout)findViewById(R.id.back);
        layout.setOnClickListener(this);
        mBrightness = getScreenBrightness();
        isFlashAvail = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
        isFlashMode = getSharedPreferences(SETTING_NAME, Context.MODE_PRIVATE).getBoolean(SETTING_FLASH, isFlashMode) & isFlashAvail;
        mPreview = (SurfaceView) findViewById(R.id.surfaceView);
        if (isFlashAvail) {
            mHolder = mPreview.getHolder();
            mHolder.addCallback(this);
            mCamera = Camera.open();
            try {
                mCamera.setPreviewDisplay(mHolder);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        turnFlashOn();
    }

    private float getScreenBrightness() {
        return getWindow().getAttributes().screenBrightness;
    }

    private void setScreenBrightness(float brightness) {
        WindowManager.LayoutParams layout = getWindow().getAttributes();
        layout.screenBrightness = brightness;
        getWindow().setAttributes(layout);
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        if (isFlashAvail) {
            mHolder = holder;
            try {
                mCamera.setPreviewDisplay(mHolder);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        if (isFlashAvail) {
            mCamera.stopPreview();
            mHolder = null;
        }
    }

    private void turnFlashOn() {
        if (isFlashMode) {
            Camera.Parameters params = mCamera.getParameters();
            params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
            mCamera.setParameters(params);
            mCamera.startPreview();
        } else {
            mPreview.getRootView().setBackgroundColor(Color.WHITE);
            setScreenBrightness(1);
        }
    }

    private void turnFlashOff() {
        if (isFlashMode) {
            Camera.Parameters params = mCamera.getParameters();
            params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
            mCamera.setParameters(params);
            mCamera.stopPreview();
        } else {
            mPreview.getRootView().setBackgroundColor(Color.BLACK);
            setScreenBrightness(mBrightness);
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        turnFlashOff();
    }

    @Override
    protected void onResume() {
        super.onResume();
        turnFlashOn();
    }

    @Override
    protected void onDestroy() {
        turnFlashOff();
        if (mCamera != null) {
            mCamera.release();
        }
        final SharedPreferences.Editor editor = getSharedPreferences(SETTING_NAME, Context.MODE_PRIVATE).edit();
        editor.putBoolean(SETTING_FLASH, isFlashMode);
        editor.apply();
        super.onDestroy();
    }

    @Override
    public void onClick(View v) {
        if (isFlashAvail) {
            turnFlashOff();
            isFlashMode = !isFlashMode;
            turnFlashOn();
        }
    }
}

...
Рейтинг: 0 / 0
Фонарик с исходниками
    #39118852
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
а для новых api?
...
Рейтинг: 0 / 0
Фонарик с исходниками
    #39118970
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа для новых api?
Вообще это писалось под себя года два назад. Выложил в качестве примера.
Да и новые апи пока не в топе http://developer.android.com/intl/ru/about/dashboards/index.html#Platform
Более того, новые апи даже не все производители встраивают в андроиды 5.1 и выше.
То есть наличие свежей версии андроида не гарантирует наличия нового апи.

П.С. Камера тут для кривого самсунга, который без нее не дает на некоторых девайсах включать вспышку. :)
...
Рейтинг: 0 / 0
Фонарик с исходниками
    #39120004
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
у меня есть работающая вещь для распознавания qr кодов, но с новыми api куча деприкайтов, хотя работает на 5.1.1, мне не требуется распространения на любое железо, да и подучиться под новое.. надо что-то почитать на русском , примеры....
...
Рейтинг: 0 / 0
Фонарик с исходниками
    #39120129
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяу меня есть работающая вещь для распознавания qr кодов, но с новыми api куча деприкайтов, хотя работает на 5.1.1
И на шестерке будет работать. Гугловцы с таким подходом производителей знакомы и потому еще долго не откажутся от поддержки старых api.
...
Рейтинг: 0 / 0
Фонарик с исходниками
    #39120145
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanвадяу меня есть работающая вещь для распознавания qr кодов, но с новыми api куча деприкайтов, хотя работает на 5.1.1
И на шестерке будет работать. Гугловцы с таким подходом производителей знакомы и потому еще долго не откажутся от поддержки старых api.

неа, а вот с 6-кой не факт из-за новой системы разрешений.
...
Рейтинг: 0 / 0
Фонарик с исходниками
    #39120152
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джибсwadmanпропущено...

И на шестерке будет работать. Гугловцы с таким подходом производителей знакомы и потому еще долго не откажутся от поддержки старых api.

неа, а вот с 6-кой не факт из-за новой системы разрешений.
Я имел в виду конкретно камеру, а разрешения не новые, а "хорошо забытые старые" - AppOps допиленный, который api не касается.
...
Рейтинг: 0 / 0
Фонарик с исходниками
    #39120163
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanДжибспропущено...


неа, а вот с 6-кой не факт из-за новой системы разрешений.
Я имел в виду конкретно камеру, а разрешения не новые, а "хорошо забытые старые" - AppOps допиленный, который api не касается.

а у меня там локейшены не работали, пока я не воткнул новый функционал из 6-ки для запроса разрешений.
...
Рейтинг: 0 / 0
Фонарик с исходниками
    #39120177
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джибсwadmanпропущено...

Я имел в виду конкретно камеру, а разрешения не новые, а "хорошо забытые старые" - AppOps допиленный, который api не касается.

а у меня там локейшены не работали, пока я не воткнул новый функционал из 6-ки для запроса разрешений.
Дак это новый api, а мы про depricated. :)
...
Рейтинг: 0 / 0
Фонарик с исходниками
    #39120257
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanДжибспропущено...


а у меня там локейшены не работали, пока я не воткнул новый функционал из 6-ки для запроса разрешений.
Дак это новый api, а мы про depricated. :)

Понятно, в моем случае, там вроде как не было устаревших вещей.
...
Рейтинг: 0 / 0
Фонарик с исходниками
    #39120318
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что будет работать я не сомневаюсь, но хочется и новое попробовать
раз есть железо с 5.1.1
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Фонарик с исходниками
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]