Чтение штрихкодов с андроидом

Привет я разрабатываю приложение для андроида герой htc. Я изучаю способы использовать встроенного туриста, чтобы считать двухмерные штрихкоды и извлечь строку, возвращенную из штрихкода. Я только недавно начал работать с андроидом sdk, но у меня действительно есть фон программирования от работы над проектами с Java. Мне любопытно знать, какой лучший способ считать двухмерный штрихкод был бы. У меня есть некоторые примеры приложения, которые читают штрихкод, но они - все .apk файлы и не имеют никакого источника или библиотеки, с которой я могу работать. для давания лучшее представление Вы о том, что я пытаюсь выполнить этот сайт, позволяете поколение двухмерных штрихкодов, составленных из данных, которых Вы требуете здесь

Любые ответы значительно ценились бы.

34
задан user233354 10 February 2010 в 21:06
поделиться

3 ответа

Программы Android могут взаимодействовать друг с другом с помощью намерений. Намерения немного похожи на вызовы удаленных процедур: вы просите другую программу выполнить определенное действие (например, сканировать штрих-код), а другая программа выполнит эту задачу за вас. Результат возвращается, когда задача завершена.

Если пользователь установил сканер штрих-кода ZXing, вы можете просто использовать намерение для сканирования штрих-кода. После этого запустится сканер штрих-кода, пользователь отсканирует код и вернет вам результат.

Дополнительную информацию об этом сканере можно найти на странице Google Code этого проекта: http://code.google.com/p/zxing/wiki/ScanningViaIntent

37
ответ дан 27 November 2019 в 16:59
поделиться

Программы Android могут взаимодействовать с другими пользователями с помощью своих намерений. Интенты немного похожи на удаленные вызовы процедур: вы запрашиваете у другой программы определенное действие (например, сканировать штрих-код), и другая программа выполнит эту задачу для вас. Результат возвращается по завершении задачи.

Если пользователь установил сканер штрих-кода ZXing, можно просто использовать функцию сканирования штрих-кода. После этого запускается сканер штрих-кодов, который позволяет пользователю отсканировать код и вернуть результат.

Более подробную информацию об этом сканере можно найти на странице Google Code этого проекта: http://code.google.com/p/zxing/wiki/ScanningViaIntent

-121--1305052-

Таким образом, я использовал этот код (это измененная версия возобновления загрузки HTTP найдена в Интернете)

function _output_file($file, $path)
{
    $size = filesize($path.$file);

    @ob_end_clean(); //turn off output buffering to decrease cpu usage

    // required for IE, otherwise Content-Disposition may be ignored
    if(ini_get('zlib.output_compression'))
    ini_set('zlib.output_compression', 'Off');

    header('Content-Type: application/force-download');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header("Content-Transfer-Encoding: binary");
    header('Accept-Ranges: bytes');

    /* The three lines below basically make the 
    download non-cacheable */
    header("Cache-control: no-cache, pre-check=0, post-check=0");
    header("Cache-control: private");
    header('Pragma: private');
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

    // multipart-download and download resuming support
    if(isset($_SERVER['HTTP_RANGE']))
    {
        list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2);
        list($range) = explode(",",$range,2);
        list($range, $range_end) = explode("-", $range);
        $range=intval($range);
        if(!$range_end) {
            $range_end=$size-1;
        } else {
            $range_end=intval($range_end);
        }

        $new_length = $range_end-$range+1;
        header("HTTP/1.1 206 Partial Content");
        header("Content-Length: $new_length");
        header("Content-Range: bytes $range-$range_end/$size");
    } else {
        $new_length=$size;
        header("Content-Length: ".$size);
    }

    /* output the file itself */
    $chunksize = 1*(1024*1024); //you may want to change this
    $bytes_send = 0;
    if ($file = fopen($path.$file, 'rb'))
    {
        if(isset($_SERVER['HTTP_RANGE']))
        fseek($file, $range);

        while
            (!feof($file) && 
             (!connection_aborted()) && 
             ($bytes_send<$new_length) )
        {
            $buffer = fread($file, $chunksize);
            print($buffer); //echo($buffer); // is also possible
            flush();
            $bytes_send += strlen($buffer);
        }
    fclose($file);
    } else die('Error - can not open file.');

die();
}

, а затем в модели:

function download_file($filename){
    /*
        DOWNLOAD
    */
    $path = "datadirwithmyfiles/"; //directory

    //track analytics

    include('includes/Galvanize.php'); //great plugin
    $GA = new Galvanize('UA-XXXXXXX-7');
    $GA->trackPageView();

    $this->_output_file($filename, $path);

}

Он работает, как и ожидалось во всех упомянутых браузерах на Win/MAC - до сих пор

-121--4268452-

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

(Хорошо, материал ZXIng, рекомендованный другими, превосходит этот взлом вручную)

-3
ответ дан 27 November 2019 в 16:59
поделиться

Я бы посмотрел на этот проект Android с открытым исходным кодом: http://code.google.com/p/zxing/

11
ответ дан 27 November 2019 в 16:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: