Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ТСД ZEBRA TC200 +1c мобильная

ТСД ZEBRA TC200 +1c мобильная
Я
   rnikkinko
 
03.02.20 - 10:08
Предыстория купили ТСД ZEBRA нужно было завязать сканер с мобильной 1с, стал гуглить решений не было, пришлось писать самому, неделю поиска по тернету получился следующий результат.
На стороне ТСД в приложении DataWedge -> Profile0(default) ->intent output "eneble",Intent action "com.dw.action",intent delivery "Broadcast intent".
Ставим android studia создаем новый проект шаблон выбираем Empty Activity в классе MaintActivity.java пишем следующий код (если public class MainActivity extends AppCompatActivity { подчеркнутый красным то выделите AppCompatActivity, слева появится красная лампочка нажмите на ниё и выберете impotr class  )




package com.zebra.basicintent1; //имя вашего пакета, оставляйте свой, копировать эту строчку не надо

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
//import android.support.v7.app.AppCompatActivity; //при ошибке разкомментируйте этот импорт
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {



    Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        IntentFilter filter = new IntentFilter();
        filter.addCategory(Intent.CATEGORY_DEFAULT);
        filter.addAction("com.dw.action");
        registerReceiver(myBroadcastReceiver, filter);
        //  Log.d("tuk", "start");
    }

    Override
    protected void onDestroy()
    {
        super.onDestroy();
        unregisterReceiver(myBroadcastReceiver);
    }

  
    private BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver() {
        Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            Bundle b = intent.getExtras();




           // Log.d("tuk", "keySet");
            //  This is useful for debugging to verify the format of received intents from DataWedge
           // for (String key : b.keySet())
           // {
           //     Log.d("tuk", key);
           //  }

            if (action.equals("com.dw.action")) {
                //  Received a barcode scan
                try {
                    displayScanResult(intent, "via Broadcast");
                } catch (Exception e) {
                    //  Catch if the UI does not exist when we receive the broadcast
                }
            }
        }
    };

    //
    // The section below assumes that a UI exists in which to place the data. A production
    // application would be driving much of the behavior following a scan.
    //
    private void displayScanResult(Intent initiatingIntent, String howDataReceived)
    {
       // String decodedSource = initiatingIntent.getStringExtra(getResources().getString(R.string.datawedge_intent_key_source));
      //  String decodedData = initiatingIntent.getStringExtra(getResources().getString(R.string.datawedge_intent_key_data));
       // String decodedLabelType = initiatingIntent.getStringExtra(getResources().getString(R.string.datawedge_intent_key_label_type));
        String decodedSource = initiatingIntent.getStringExtra("com.symbol.datawedge.source");
        String decodedData = initiatingIntent.getStringExtra("com.symbol.datawedge.data_string");
        String decodedLabelType = initiatingIntent.getStringExtra("com.symbol.datawedge.label_type");



        Intent myintent = new Intent();
        myintent.setAction("com.google.android.c2dm.intent.RECEIVE");
        myintent.putExtra("text", decodedData); //Основной текст сообщения
        myintent.putExtra("base", "");
        myintent.putExtra("title", decodedData); //Будем использовать для определения действия
        sendBroadcast(myintent);


      


    }


    public void sendc(View view) {
        Intent myintenttwo = new Intent();
        myintenttwo.setAction("ru.dewersia.barcodeDLL.TRUSTCONNECT");
        myintenttwo.putExtra("text", "two"); //Основной текст сообщения
        myintenttwo.putExtra("base", "");
        myintenttwo.putExtra("title", "decodedData"); //Будем использовать для определения действия
        sendBroadcast(myintenttwo);
    }
}

Внимание!!!
Ставим мобильную платформу версии 8.3.10 другие не принимают бродкасты

на стороне 1с
ВАЖНО!!! запускаем приложение для андроида не закрывая его (на андроиде по середине кругляшок сворачивает приложение) запускаем 1с , нажимаем кнопку сканирования, если была перезагрузка телефона то нужно подождать один раз около 30 секунд тока после этого появится штрихкод, с чем связано ни знаю, потом нормально работает.


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    //Вставить содержимое обработчика
    
    #Если МобильноеПриложениеКлиент Тогда
        Параметр = Неопределено;
        ОП = Новый ОписаниеОповещения("ОбработчикШтрихКода",ЭтаФорма,Параметр);
        ДоставляемыеУведомления.ПодключитьОбработчикУведомлений(ОП);           
        Сообщить("Подключение обработчика");
    #КонецЕсли
    
КонецПроцедуры

&НаКлиенте
Процедура ОбработчикШтрихКода(Уведомление,Локальное,Показано,ДопПараметры) Экспорт
    
    Сообщить(Уведомление.Текст);
    
КонецПроцедуры

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.