Итак, эта нехитрая библиотека позволяет вам получать изображение с камеры телефона, в указанном формате, качестве, и размере.
Достаточно полезная штука, если вы желаете написать редактор изображений, или просто игру где можно использовать фотографии.
Всего в библиотеке 5 функций. Одна для инициализации, одна собственно для фотографирования, и 3 для того чтобы выяснять, работает ли программа или почему она не работает. При этом библиотека
никогда не вызовет краха самой игры.
В вложении - папка проэкта библиотеки, в которой можно найти саму библиотеку (Lib_snap.class) и умеренно откоментированный пример программы на ней.
Документация:
Lib_snap
by YellowAfterlife
Документация
SnapInit() - Инициализировать библиотеку. Вызывать в начале программы.
SnapAvaible():Integer (0\1) - Возращает, доступна ли камера устройства.
Предполагаемое использование - закрывать программу если нет камеры.
SnapGet(Params:String):Image - Делает фотографию с задаными параметрами.
Если строка параметров пустая, будут использованы параметры устройства
по умолчанию (не очень хорошая идея). Иначе, формат строки параметров:
encoding=#type&quality=#level&width=#w&height=#h
#type - кодирование (jpeg\bmp\png, jpeg работает чаще всего)
#level - качество (0..100) для JPEG
#w - ширина изображения.
#h - высота изображения.
Пример: 'encoding=jpeg&quality=100&width=240&height=320'
Означает: JPEG кодирование, 100% качество, 240x320
SnapWorks():Integer - Возращает результат работы SnapGet
0 - функция еще не вызывалась
-1 - функция сработала (получено изображение)
1 - обычная ошибка, используйте SnapError чтобы узнать о ней больше
2 - ошибка состояния, формат не поддерживается или забыта инициализация.
3 - ошибка безопасности - пользователь не разрешил фотографировать.
SnapError():String - возращает текст ошибки или ее название.
Исходный код библиотеки:
Он может показатся немного странным, но это изза очень тщательного слежения за ошибками.
import javax.microedition.media.Manager;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import javax.microedition.lcdui.Image;
import java.lang.IllegalStateException;
import java.lang.SecurityException;
public class Lib_snap {
public static Player _lsp;
public static VideoControl _lsv;
public static int _lsw = 0;
public static int _lsc = 0;
public static String _lse;
public static void snapinit() {
try {
_lsp = Manager.createPlayer("capture://image");
_lsp.realize();
_lsv = (VideoControl)_lsp.getControl("VideoControl");
_lsv.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null);
_lsw = ((_lsv != null) ? 1 : 0);
_lsp.start();
} catch (Exception e) { _lsw = 0; }
}
public static Image snapget(String s)
{
try {
byte[] r = _lsv.getSnapshot(s == "" ? null : s);
_lsc = -1;
_lse = null;
Image i = Image.createImage(r, 0, r.length);
return i;
}
catch (IllegalStateException e) { _lsc = 2; _lse = e.getMessage(); if (_lse == null) _lse = e.toString(); return null; }
catch (SecurityException e) { _lsc = 3; _lse = e.getMessage(); if (_lse == null) _lse = e.toString(); return null; }
catch (Throwable e) {
_lse = e.getMessage(); if (_lse == null) _lse = e.toString();
_lsc = 1;
return null;
}
}
public static int snapworks() { return _lsc; }
public static int snapavaible() { return _lsw; }
public static String snaperror() { return _lse; }
}
__________________
Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...