为什么手机拍照的app不手机自动识别二维码码

蜂鸟手机端
焦圈,为摄影而生
&&有没有手机上不用摄像头读取二维码软件
识别这个从软件开发来讲很简单,但是一般软件不具备这个功能的原因是应用环境不一样,用手机都是现场采集图像,把照片生成临时文件进行识别,基本上不会用到打开已经存储的图片,否则的话现场还需要一个图片发送设备,通过蓝牙、彩信等,就失去它的快捷和方便性了,
所以我认为这种软件一般不会增加这个功能,
器材讨论区
品牌讨论区
主题交流区
选择论坛版块
提出您的问题为什么手机扫描不了二维码但是可以照相_百度知道
为什么手机扫描不了二维码但是可以照相
手机不知道哪天开始有了这问题
照相里面有自带扫码的发现用不了
单独的扫码APP也用不了。。。
但是拍照下来微信里点图片识别图片二维码又可以识别。。。请问这是哪里出了问题。。。
我有更好的答案
那就是二维码不清晰。你不要对的太近,稍稍远一些且方框里能容得下
很清晰。。。
那你不要太着急,对对准,镜头尽量不要晃动,再等一会儿,你试试?再不行你就打开微信-发现-扫一扫
采纳率:100%
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。为什么我的二维码无法识别?_百度知道
为什么我的二维码无法识别?
我有更好的答案
以下有几种原因可以参考:1.手机像素不好,无法识别二维码。2.下载的软件出现问题,您可以选择从新下载。3.你手机支持不起这个功能。好比看一行文字,光线不足的时候你肯定看不清楚上面写的是什么。同样的情况下,摄像头也无法捕捉清晰的二维码,这时可以通过开启闪光灯、增加其它光源等办法来解决。光线强,甚至有反光的现象,同样会导致二维码无法识别。与拍照一样,二维码在取景框中不能过亮。二维码不清晰或被弄脏,二维码一般只有两种颜色,有其它杂色或者污垢,都会导致二维码识别率降低。因为空气环境,摄像头很容易沾上厚厚的灰尘,这种情况也会导致摄像头无法捕捉清晰的图像。绝大部分二维码扫描软件均需要连接网络,如果信号不佳,可能会导致扫描失败。二维码扫描不出来,还可能使扫描软件本身的问题,尝试更换别的二维码扫描软件。二维码扫描软件很多,大部分浏览器都有。
为您推荐:
其他类似问题
您可能关注的内容
二维码的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。支付宝扫描支付——app端无法显示二维码等问题的解决方式
ok首先说明一下,下面说的使用 即时到账方式,服务端获取到了一个订单的支付地址,而app端我们做的就是使用WebView来显示二维码的操作,涉及到二维码地址的请求,这一部分有服务端来做。
一、主要涉及的问题
WebView 不能显示二维码,出现网站已迁移的问题
退出了Activity,但是网页还在不停的请求
https需要证书
如何判断支付成功
二、问题解决的方式
(1) 第一个问题可能由以下两种原因引起
WebView木有加代理
* 加这个代理的原因是: 以前是不需要加这个的,现在必须加这个,现在不加这个会出现(无法连接网络)这个错误,加上用户代理
payWv.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0. Safari/537.36
木有接受网站的证书(就是第三个问题)
创建一个 WebViewClient 的子类MyWebViewClient,重写这个类中的onReceivedSslError方法,接受网站的证书
* 处理https请求的时候,需要加上下面这个代码(接受证书),不然有的手机无法请求https(例如:ml)
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error) {
handler.proceed();
Log.i("MyWebViewClient", "接受证书");
(2)第二个问题的解决方式
重写onKeyDown方法,退出时,把WebView 销毁掉
* 按下返回键的时候 退出Activity 并且destroy掉 webView
* 不destory 掉的话,webview会一直请求网路 除非整个应用关闭,
* 所以添加上了 webView.destroy操作。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
payWv.destroy();
return false;
(3)第三个问题的解决方式
这个问题的解决方式和第一个问题中的第二个解决方式一样
创建一个 WebViewClient 的子类,重写这个类中的onReceivedSslError方法,接受网站的证书
* 处理https请求的时候,需要加上下面这个代码(接受证书),不然有的手机无法请求https(例如:ml)
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error) {
handler.proceed();
Log.i("MyWebViewClient", "接受证书");
(4)第四个问题的解决方式
支付成功,我们的网页地址会调到一个支付成功的界面(地址是:?,后面带一些参数),这时候,我们可以在MyWebViewClient中的shouldOverrideUrlLoading方法中判断,url是不是的开始部分是不是上面这个网址。
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("https://tradeexprod.alipay.com/cashiergw/cashierReturnMiddlePage.htm?")){
startActivity(new Intent(MainActivity.this,PayOk.class));
view.loadUrl(url);
return true;
三、代码示例
这里主要说明一哈,我们获取到的二维码,有好几种格式,这里我们选择的是 2
类型(长度范围)
是否可为空
qr_pay_mode
扫码支付方式
扫码支付的方式,支持前置模式和跳转模式。前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以iframe方式请求支付宝页面。具体分为以下3种:1、订单码-简约前置模式,对应iframe宽度不能小于600px,高度不能小于300px;2、订单码-前置模式,对应iframe宽度不能小于300px,高度不能小于600px;3、订单码-迷你前置模式,对应iframe宽度不能小于75px,高度不能小于75px。跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。4、订单码-跳转模式
具体可以看
根据生成的二位的大小,我们来定义WebView的宽和高,ok也许你也想到了,我们的这个WebView应该不能滑动放大之类的,so easy 我们写一个WebView的子类,屏蔽掉它的触摸事件就ok了。
(1)NoScorWbView
package com.xm.alipayxmdemo1;
import android.content.C
import android.util.AttributeS
import android.view.MotionE
import android.webkit.WebV
*:qiwenming
*: 0028 下午 5:14
public class NoScorWbView extends WebView {
public NoScorWbView(Context context) {
super(context);
public NoScorWbView(Context context, AttributeSet attrs) {
super(context, attrs);
public NoScorWbView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
*让这个webview 无法响应触摸事件
public boolean onTouchEvent(MotionEvent event) {
return true;
(2)activity_main.xml
&RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"&
&com.xm.alipayxmdemo1.NoScorWbView
android:layout_centerInParent="true"
android:id="@+id/sdwv_apy"
android:layout_width="290dp"
android:layout_height="290dp" /&
&/RelativeLayout&
(3)MainActivity
package com.xm.alipayxmdemo1;
import android.app.A
import android.app.ProgressD
import android.content.I
import android.net.http.SslE
import android.os.B
import android.os.H
import android.util.L
import android.view.KeyE
import android.webkit.SslErrorH
import android.webkit.WebV
import android.webkit.WebViewC
public class MainActivity extends Activity {
private WebView payWv;
private ProgressD
private String payUrl = "你获取到二维码的支付地址";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
payWv = (WebView)findViewById(R.id.sdwv_apy);
payWv.getSettings().setJavaScriptEnabled(true);
payWv.setWebViewClient(new MyWebViewClient());
* 加这个代理的原因是: 以前是不需要加这个的,现在必须加这个,现在不加这个会出现(无法连接网络)这个错误,加上用户代理
payWv.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0. Safari/537.36");
payWv.loadUrl(payUrl);
runnable = new Runnable() {
public void run() {
if(dialog != null && dialog.isShowing())
dialog.dismiss();
handler = new Handler();
dialog = ProgressDialog.show(this, null, "正在加载中。。。", true, true);
class MyWebViewClient extends WebViewClient{
* 处理https请求的时候,需要加上下面这个代码(接受证书),不然有的手机无法请求https(例如:ml)
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error) {
handler.proceed();
Log.i("MyWebViewClient", "接受证书");
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("https://tradeexprod.alipay.com/cashiergw/cashierReturnMiddlePage.htm?")){
startActivity(new Intent(MainActivity.this,PayOk.class));
view.loadUrl(url);
return true;
public void onPageFinished(final WebView view, String url) {
Log.d("MyWebViewClient","onPageFinished---url="+url);
handler.removeCallbacks(runnable);
handler.postDelayed(runnable, 2000);
super.onPageFinished(view, url);
* 按下返回键的时候 退出Activity 并且destroy掉 webView
* 不destory 掉的话,webview会一直请求网路 除非整个应用关闭,
* 所以添加上了 webView.destroy操作。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode== KeyEvent.KEYCODE_BACK){
payWv.destroy();
return false;
四、演示与源码下载
没有更多推荐了,
不良信息举报
举报内容:
支付宝扫描支付——app端无法显示二维码等问题的解决方式
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!扫描二维码自动识别手机系统(Android/IOS)跳转不同页面
我的图书馆
扫描二维码自动识别手机系统(Android/IOS)跳转不同页面
1、移动互联网发展迅速,一般的应用到要适应多个终端版,比如:iPhone版、iPad版、Android版。
2、业务在大点,APP就会扩展到外国
3、但是对于我们应用提供方,一定希望入口只有一个:既提供一个二维码就可以满足上面的要求,这样二维码快捷简单,便于管理。所以怎样让这张二维码承载这么丰富的信息量呢。
下面代码就是我分享的代码。参考了网上的其他例子。
将下面的代码放到静态文件html中,然后放到服务器上,对应的html静态文件url生成二维码。然后扫描就可以了。
Markup&!DOCTYPE HTML&
&html lang="zh-CN"&
&meta charset="UTF-8"&
&title&手机APP下载页面:根据终端辨别下载地址&/title&
&script type="text/javascript"&
// 获取终端的相关信息
var Terminal = {
// 辨别移动终端类型
platform : function(){
var u = navigator.userAgent, app = navigator.appVersion;
// android终端或者uc浏览器
android: u.indexOf('Android') & -1 || u.indexOf('Linux') & -1,
// 是否为iPhone或者QQHD浏览器
iPhone: u.indexOf('iPhone') & -1 ,
// 是否iPad
iPad: u.indexOf('iPad') & -1
// 辨别移动终端的语言:zh-cn、en-us、ko-kr、ja-jp...
language : (navigator.browserLanguage || navigator.language).toLowerCase()
// 根据不同的终端,跳转到不同的地址
var theUrl = 'http://www.XXX.com';
if(Terminal.platform.android){
theUrl = '你的Android APP对应下载地址:apk文件地址';
}else if(Terminal.platform.iPhone){
theUrl = '你的iPhone APP对应下载地址:APP Store地址';
}else if(Terminal.platform.iPad){
// 还可以通过language,区分开多国语言版
switch(Terminal.language){
case 'en-us':
theUrl = '你的iPad APP(英文版)对应下载地址:APP Store地址';
case 'ko-kr':
theUrl = '你的iPad APP(韩语版)对应下载地址:APP Store地址';
case 'ja-jp':
theUrl = '你的iPad APP(日文版)对应下载地址:APP Store地址';
theUrl = '你的iPad APP(中文版-默认)对应下载地址:APP Store地址';
location.href = theUrl;
TA的最新馆藏[转]&[转]&
喜欢该文的人也喜欢

我要回帖

更多关于 php 自动识别二维码 的文章

 

随机推荐