Мой сайт
Главная | Регистрация | Вход
Понедельник, 17.06.2019, 21:48
Меню сайта
вход
Категории раздела
Ремонт ANDROID устройств [2]
Программирование [1]
Наша группа
наш фейсбук
наш твитер !
ми вконтакте
автор: ywor
опубликовано: 30.03.2012
Здравствуйте!

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

Фотографировать обычным фотоаппаратом, потом заливать фото на компьютер, искать каждый товар в админке, потом искать соответствующее фото, показалось очень долго. Гораздо проще открыть товар в админке и навести телефон на товар. Тем более, что при хорошо выставленном освещении, современные смартфоны выдают вполне качественную картинку.

Теория

В андроид-маркете лежит замечательная программа IpWebCam, которая позволяет превратить свой телефон в полноценную веб-камеру. Кроме того у нее есть api для получения фотографий с автофокусом. При запуске IpWebCam, на телефоне поднимается web-сервер, который позволяет с локальной машины по wi-fi получать текущий кадр с телефона по адресу вида 192.168.0.14:8080/shot.jpg

Идея была следующая:
Вставить в форму <img> с адресом фотографии со смартфона
Создать canvas и в него скопировать содержимое <img>
Сохранить данные при помощи canvas.toDataURL()
Отправить данные на сервер при помощи ajax


К сожалению, из-за кросс-доменных политик метод toDataURL() сохраняет только черный квадрат вместо изображения. Поэтому canvas надо создавать на том же домене, из которого берется изображение. Сходив на сайт программы, я узнал, что IpWebCam позволяет создавать собственные html-страницы на своем внутреннем сервере. Для этого их достаточно залить на sd-карту и указать программе, в какой папке их искать.

Алгоритм следующий:
На смартфоне создаем специальную страницу (например my.html)
В форме на нашем сайте создаем <iframe>, в который грузим html-страницу со смартфона.
На телефоне в html странице создаем canvas, в который грузим изображение с камеры.
Сохраняем данные при помощи canvas.toDataURL() в переменную
Передаем данные в родительскую страницу при помощи window.postMessage()
В родительской странице получаем изображение и отправляем данные на сервер при помощи ajax
На сервере сохраняем изображение в файл.

Решение

Во-первых, ставим на смартфон программу IpWebCam из маркета.

Создаем на смартфоне папку webcam, а в ней создаем файл my.html со следующим содержимым:
Content-Type: text/html

<html>
<head>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.jplayer.min.js"></script>
<script type="text/javascript" src="common.js"></script>
<style>
    * { margin: 0; padding: 0}
</style>
    
<script type="text/javascript">
$(loadJsWindowed);
function shot()
{
    $('#msg').text('Please wait...');
    var img = new Image();
    img.onload =  function(){
        var canvas = $('<canvas width="' + img.width + '" height="' + img.height + '">');
        canvas[0].getContext('2d').drawImage(img, 0, 0);
        var data = canvas[0].toDataURL('image/jpeg').replace(/data:image\/jpeg;base64,/, '');
        canvas.remove();
        //засылаем картинку на сервер
        window.parent.postMessage(data, '*');
    }
    img.src = 'photoaf.jpg';
}
</script>

</head>
<body>
<div id="msg" style="text-align: center; background-color: #000000; color: #FFFFFF; font-weight: bold; cursor: pointer;" onclick="shot();">Click to take a shot..</div>
<img id="img1" src="/shot.jpg?1" style="cursor: pointer; position:absolute;"/>
<img id="img2" src="/shot.jpg?2" style="cursor: pointer; position:absolute;"/>
</body>
</html>

Обратите внимание, что в начале файла идут HTTP заголовки и пустая строка перед основным содержимым страницы. За основу был взят javascript видео-проигрыватель из самой программы.

Теперь надо указать, где искать файлы для веб-сервера приложения. Для этого откройте программу на телефоне, нажмите хардварную кнопку меню и выберите единственный пункт Cheats. Теперь введите в открывшемся диалоговом окне команду set(HtmlPath,/sdcard/webcam). Обратите внимание, что после запятой не допускаются пробелы.

Теперь на нашем сервере создаем файл jquery плагина jquery.ipwebcam.js:
(function($) {
    $.fn.ipWebCam = function(options) {
        var settings = $.extend( {
            ip: '',
            width: 640,
            height: 480,
            action: '?',
            callback: function(){}
        }, options);
        
        function ipWebCam_listener(event){
            $('#ipWebCam_wnd').prev().remove();
            $('#ipWebCam_wnd').remove();
            $.post(settings.action, {data:event.data}, settings.callback);
        }

        if (window.addEventListener){
            window.addEventListener('message', ipWebCam_listener,false);
        } else {
            window.attachEvent('onmessage', ipWebCam_listener);
        }
        
        return this.each(function() {
            $(this).click(function(){
                
                if(settings.ip=='')
                    settings.ip = prompt('IP Webcam address:');
                
                $('<iframe>').css({
                    position: 'fixed',
                    width: settings.width + 'px',
                    marginLeft: '-' + (settings.width/2) + 'px',
                    left: '50%',
                    height: settings.height + 'px',
                    marginTop: '-' + (settings.height/2) + 'px',
                    top: '50%',
                    border: 0,
                    overflow: 'hidden',
                    backgroundColor: '#777777'
                })
                .attr('width', settings.width)
                .attr('height', settings.height)
                .attr('src', 'http://' + settings.ip + ':8080/my.html')
                .attr('id', 'ipWebCam_wnd')
                .prependTo('body');

                $('<div>').css({
                    position:'fixed',
                    left: 0,
                    top: 0,
                    right:0,
                    bottom:0,
                    backgroundColor: '#000000',
                    opacity: 0.5
                }).click(function(){
                    $('#ipWebCam_wnd').prev().remove();
                    $('#ipWebCam_wnd').remove();
                }).prependTo('body'); ... Читать дальше »
 комментариев: 0
 просмотров: 389
автор: ywor
опубликовано: 28.03.2012

Хотел бы поделиться опытом восстановления китайского планшета MID X5A, хотя у этой модели есть еще другие названия но принцип остается тем-же.

Первым делом необходимо убедиться в версии "железа” вашего планшета, изначально их было два типа, мне попался на ремонт планшетник со старым "железом”. Он отличается тем что на плате установлен переключатель для ввода планшета с FWDN режим т.е. режим прошивки. Ох немало времени он у меня отнял, для этого я решил сложить всю найденную информацию воедино.

X5A (старое железо)

Оснащение:
— нет G-сенсора
— HDMI выход
— FWDN переключатель на плате

Последняя официальная прошивка, упоминание на которую я нашел в интернете – #369 (ссылка не работает), по комментариям в ней не работает Андроид Маркет, по этому все рекомендуют использовать версию пониже – #348 (которую тоже нигде не удалось найти).

Что нужно для прошивки планшета MID X5A

— Mini USB кабель
— программа загрузчик zip FWDN_V7_v2.10 - 818.24 kB (10 раз(а))
— файлы прошивки для старой версии железа X5A-FWDN-image.zip

Процесс прошивки MID X5A

  1. Снимаем заднюю крышку корпуса планшета и переводим переключатель в режим FWDN.
    ... Читать дальше »
 комментариев: 0
 просмотров: 1467
автор: ywor
опубликовано: 28.03.2012

Добрый день, хотел бы сегодня поделиться опытом ремонта китайского планшета GPAD G10. Пришел с неисправностью нет подсветки экрана, после вскрытия обнаружил следы ремонта, по всей видимости неудачного :-) .

Первым делом поменял сгоревший диод Шоттки D5, который предыдущими умельцами был заменен на обычный стеклянный диод типа 1N4148. Подсветка появилась, только нестабильно работала ( моргала ) и очень сильно грелся сам преобразователь U10 с маркировкой BT=A08. Информации на него я к сожалению не нашел и решил заменить всю схему преобразователя подсветки на то что есть под рукой. А под рукой оказался, старый-добрый преобразователь LTYNсо старых шлейфов телефонов Samsung T500, S500, E700 и т.д..

gpad-g10-no-backlight-u10-bt-a08

При внимательном изучении, оказалось что распиновка выводов микросхем BT=A08 и LTYNсовпадает, за исключением подключения диода Шоттки, он включался на вывод которого нет на заменяемом аналоге LTYN.

Подсветка на BT=A08

Выпаял сгоревший преобразователь BT=A08 и непонятный диод D5, отложил их в сторонку. Впаял все новые элементы по приведенной ниже схеме.

Подсветка на LTYN

Включаю планшет, но на выходе преобразователя всего 5,5 вольт, внимательно просматриваю монтаж в надежде обнаружить какой ни будь непропай, но все в порядке, пайка надежна. Тогда было принято решение заменить еще и дроссель преобразователя на 22uH. Его, кстати, тоже снял со старого шлейфа. И как было задумано, после замены дросселя, появилась подсветка, правда не очень яркая... Но этот недочет был решен, заменой резистора R38, вместо сопротивления  ... Читать дальше »

 комментариев: 0
 просмотров: 972
автор: ywor
опубликовано: 28.03.2012

Начнем с того, что любой достаточно опытный пользователь операционной системы Android хотя бы раз за весь период использования Android OS задавался вопросом: как создать прошивку Android? И связано это не с тем, что сама операционная система настолько плоха, что каждый желает ее переделать, нет конечно. В первую очередь это вызвано разными вкусами всех пользователей android-а.

Не буду долго разлагольствовать, что и почему, а сразу начну с описания дествий для выполнения поставленной задачи.

Что нам понадобиться:

1. ПК или ноут с установленной операционной системой Ubuntu (пользователи Windows, не пугайтесь, все намного проще чем вам кажется), + установленная java.

2. Кухня (что это и как его использовать мы узнаем немного позже) для сборки прошивки.

3. Официальная прошивка для вашего аппарата (поскольку мы не будем собирать прошивку полностью с нуля, а всего лишь модифицируем официальную).

Порядок действий:

1. Установка Ubuntu

Согласно вышеукащанного перечня, в первую очередь нам необходима операционная система Ubuntu. Сразу скажу, что пользователям Windows не надо пугаться, так как я детально распишу как установить и в дальнейшем использовать данную операционку.

Для справки:

Ubuntu (рус. Убу́нту; зулу ubuntu — человечность) — операционная система, использующая ядро Linux и основанная на Debian. Основным разработчиком и спонсором является компания Canonical. В настоящее время проект активно развивается и поддерживается свободным сообществом.

Установить данную операционную систему я предлагаю при помощи специальной программы Wubi, которая поставит Ubuntu из под Windows. То есть, изменять / удалять убунту мы сможем через панель управления Windows.

Для выполнения данной задачи неободимо скачать установщик Wubi (например, вот тут). Кстати, для общего развития, название wubi это аббревиатура от windows ubuntu installer. Запустив wubi, получим вот такое окно:

wubi

Перед установкой Ubuntu Вам необходимо будет указать диск, куда Вы планируете установить операционную систему, объем места на диске (я обычно выделяю не менее 4 Гб), язык, имя пользователя и пр. После запускаем установку клавишей «Установить».

... Читать дальше »

 комментариев: 0
 просмотров: 1407
автор: ywor
опубликовано: 27.03.2012
Доброго времени суток!

Наряду со статьей "iPhone: MiTM атака из кармана", родилась почти аналогичная статья про Android.

Мы уже знаем, на что способен iPhone. Уступает ли ему Android?

Было рассмотрено около 25 боевых приложений. Хочу предоставить вам результат маленького исследования. Многие приложения даже не запустились, некоторые подвесили телефон намертво, но некоторые даже работали!

Весь софт тестировался на телефоне LG Optimus, с версией Android 2.3.

Итак, краткий обзор боевого софта на Android:



1. Shark — Тот самый wireshark. Да, он тоже есть под Android. Работает безупречно. На девайсе завелся без проблем. Пишет логи в *.pcap формате. Складывает на sdcard. Файл легко разбирается как на windows машине, так и на самом телефоне, с помощью Shark Read. (Хорошее приложение. Особенно, если телефон работает в качестве WiFi точки-доступа)


2.  ... Читать дальше »
 комментариев: 0
 просмотров: 375
автор: ywor
опубликовано: 21.03.2012
Третьи грабли:
Не все кнопки будут работать с Вашей версией Android OS! Обратите внимание на колонку Version в первой статье про клавиатуры. Если вы используете те коду, которые предназначены для версий больше вашей, тогда с этого места клавиатура не будет работать.
Все кнопки, указанные после неправильной не будут функционировать. 

Поэтому, для будущей совместимости, я в своем файле, клавиши предназначенные не для моей версии Android OS, перенес в конец. Как показала практика, в этом случае все работает и файл готов к переносу на другие версии ОС.

Закидываем файл в систему

Здесь не обойтись без консольной утилиты. Подключаем девайс по USB в режиме отладки и выполняем последовательно команды в консоли cmd.exe:
d:
cd D:\android-sdks\platform-tools
adb push Broadcom_Bluetooth_HID.kl /data/local/Broadcom_Bluetooth_HID.kl
adb shell
su
mount -o remount,rw -t ext4 /dev/block/mmcblk0p9 /system
rm /system/usr/keylayout/Broadcom_Bluetooth_HID.kl
cp /data/local/Broadcom_Bluetooth_HID.kl /system/usr/keylayout/Broadcom_Bluetooth_HID.kl
chmod 644 /system/usr/keylayout/Broadcom_Bluetooth_HID.kl
exit
exit


Четвертые грабли:
Папка /system находится на файловой системе в режиме только для чтения. Для того, чтобы туда писать, нужно перемонтировать систему в режиме RW. Но для этого, нужно определить точку монтирования и тип файловой системы при помощи простой команды mount.
После перезагрузки устройства, файловая система снова станет «только для чтения».

Пояснения к командам:

D:&# ... Читать дальше »
 комментариев: 0
 просмотров: 425
автор: ywor
опубликовано: 21.03.2012
# keys for Android >=3.0 key 113 VOLUME_MUTE key 111 FORWARD_DEL key 1 ESCAPE WAKE_DROPPED key ... Читать дальше »
 комментариев: 0
 просмотров: 300
автор: ywor
опубликовано: 21.03.2012
key 56 ALT_LEFT # key 125 # key 161 key 57 SPACE WAKE_DROPPED # key 126 key 26 LEFT_BRACKET ... Читать дальше »
 комментариев: 0
 просмотров: 261
автор: ywor
опубликовано: 21.03.2012
key 58 SHIFT_LEFT key 30 A key 31 S key 32 D key ... Читать дальше »
 комментариев: 0
 просмотров: 260
автор: ywor
опубликовано: 21.03.2012
Редактируем файл

Открываем первую статью по клавиатурам и методично назначаем новые значения нашим кнопкам.
Получается что-то вроде этого:
# RAPOO E6300 keylayout file
# (c) Nix Pro Soft - Nikita Tratorov, 2012

key 172 HOME WAKE_DROPPED
key 217 SEARCH 
		... 
		
			Читать дальше »
		
 комментариев: 0
 просмотров: 284
1 2 »
Поиск
Календарь
«  Июнь 2019  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
Block title
http://websigma.net.ua/
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2019