扫码接入必读
<h3>扫描功能提供2种接入方式,二选一接入即可,推荐使用第一种免开发光标位置自动输入扫码内容:</h3>
<ul>
<li>第一种是直接使用扫描工具,无需开发,扫描结果自动输入光标位置,适用于标准软件,软件条码框支持键盘输入即可按键扫码;</li>
<li>第二种是通过接收物理按键Scan键发出的广播来实现,也需要开发人员接入,加入广播消息接收扫码结果,跟进实际业务需求处理扫码结果内容。</li>
</ul>
<hr />
<h4>方式一:</h4>
<ul>
<li>首先确保设备上安装如下图标的app,然后打开自身的app并确保界面上有光标聚焦的编辑框,按下Scan键,扫描内容会自动填充到当前的编辑框内。该方法仅适应于除3502/3505以外的手持设备。
<img src="http://doc.szzkc.com/Public/Uploads/2018-03-01/5a97652de3c20.png" alt="" />
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=3bfe4e88ef47ea2395dffd596ae3b892&amp;file=file.png" alt="" /></li>
</ul>
<hr />
<h4>方式二(确保上图app已安装)</h4>
<h5>演示源码下载:</h5>
<p>> <a href="http://www.szzkc.com/down_data_detail_293.html">http://www.szzkc.com/down_data_detail_293.html</a></p>
<p>[M系列产品示例源码](<a href="http://doc.szzkc.com/Public/Uploads/2022-12-12/ScanSdkDemo221212.rar">http://doc.szzkc.com/Public/Uploads/2022-12-12/ScanSdkDemo221212.rar</a> "M系列产品示例源码")</p>
<h5>M系列产品需要添加系统签名</h5>
<p>一、在AndroidManifest.xml文件中,添加 android:sharedUserId="android.uid.system" 属性
<img src="http://doc.szzkc.com/server/../Public/Uploads/2022-12-12/639708897e437.png" alt="" />
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a1ceacc541575e75ffdbb2bb53ce0e30&amp;file=file.png" alt="" /></p>
<p>二、在文件build.gradle (app)文件导入签名文件:[签名文件](<a href="http://doc.szzkc.com/server/../Public/Uploads/2022-12-12/6396e1d89c9e2.rar">http://doc.szzkc.com/server/../Public/Uploads/2022-12-12/6396e1d89c9e2.rar</a> "签名文件")
<img src="http://doc.szzkc.com/server/../Public/Uploads/2022-12-12/6397070e7bf20.png" alt="" />
<img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e769fd0535e4d960798b9766661ab2d2&amp;file=file.png" alt="" /></p>
<h5>扫描开关:</h5>
<ul>
<li>扫码可以通过广播消息来控制开关,关闭扫码后,摄像头可以正常使用
<pre><code class="language-java">boolean flg=true;//true or false
Intent intentBroadcast = new Intent();
intentBroadcast.setAction(&quot;com.zkc.scan&quot;);
intentBroadcast.putExtra(&quot;scan_power&quot;, flg);
mContext.sendBroadcast(intentBroadcast);</code></pre></li>
</ul>
<h5>触发扫描:</h5>
<ul>
<li>触发扫描可以通过SCAN物理按键完成,或者通过app发送按键广播消息
<pre><code class="language-java">//app发送按键广播消息方式
Intent intentBroadcast = new Intent();
intentBroadcast.setAction(&quot;com.zkc.keycode&quot;);
intentBroadcast.putExtra(&quot;keydown&quot;, 136||137);
mContext.sendBroadcast(intentBroadcast);</code></pre>
<p>> 其中keyCode值可以是136,137,135,131,141中任意一个值</p></li>
</ul>
<h5>接收扫描结果:</h5>
<ul>
<li>
<p>自定义广播消息,接收扫描结果的广播消息。</p>
<p>声明广播接收类 Declare the broadcast receiving class
private ScanBroadcastReceiver scanBroadcastReceiver = null;</p>
</li>
</ul>
<hr />
<pre><code class="language-java">注册广播消息Register the broadcast message
//1.8.11以前版本使用 intentFilter.addAction(&quot;com.zkc.scancode&quot;);
if(scanBroadcastReceiver==null) {
scanBroadcastReceiver = new ScanBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(&quot;com.scancode.resault&quot;);
this.registerReceiver(scanBroadcastReceiver, intentFilter);
}</code></pre>
<pre><code class="language-java">定义广播消息类
class ScanBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String text = intent.getExtras().getString(&quot;code&quot;);
Log.i(&quot;ScanBroadcastReceiver&quot;, &quot;ScanBroadcastReceiver code:&quot; + text);
}
}</code></pre>