当前位置: 代码迷 >> Android >> BarcodeScanner在android studio1.3.2环境下编译不过解决方案
  详细解决方案

BarcodeScanner在android studio1.3.2环境下编译不过解决方案

热度:103   发布时间:2016-04-27 22:48:13.0
BarcodeScanner在android studio1.3.2环境下编译不过
用https://github.com/mooncafes/BarcodeScanner提供的BarcodeScanner在android studio1.3.2环境下做为依赖module进行二维码扫描开发,做了一个简单的测试代码测试调用BarcodeScanner的二维码扫描功能,编译时common下的Runnable类报错,信息如下:

Error:(19, 8) 错误: 无法将类 AsyncTask<Params,Progress,Result>中的方法 executeOnExecutor应用到给定类型;
需要: Executor,CAP#1[]
找到: Executor
原因: 形式 varargs 元素类型CAP#1无法从 类 Runnable 进行访问
其中, Params,Progress,Result是类型变量:
Params扩展已在类 AsyncTask中声明的Object
Progress扩展已在类 AsyncTask中声明的Object
Result扩展已在类 AsyncTask中声明的Object
其中, CAP#1是新类型变量:
CAP#1从?的捕获扩展Object
Error:(22, 8) 错误: 无法将类 AsyncTask<Params,Progress,Result>中的方法 execute应用到给定类型;
需要: CAP#1[]
找到: 没有参数
原因: 形式 varargs 元素类型CAP#1无法从 类 Runnable 进行访问
其中, Params,Progress,Result是类型变量:
Params扩展已在类 AsyncTask中声明的Object
Progress扩展已在类 AsyncTask中声明的Object
Result扩展已在类 AsyncTask中声明的Object
其中, CAP#1是新类型变量:
CAP#1从?的捕获扩展Object
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些消息已经过简化; 请使用 -Xdiags:verbose 重新编译以获得完整输出
2 个错误
Error:Execution failed for task ':BarcodeScanner:compileDebugJava'.
> Compilation failed; see the compiler error output for details.

Runnable类的源码如下
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Build;

/**
 * 兼容低版本的子线程开启任务
 * 
 * @author hugo
 * 
 */
public class Runnable {

@SuppressLint("NewApi")
@SuppressWarnings("unchecked")
public static void execAsync(AsyncTask<?, ?, ?> task) {
if (Build.VERSION.SDK_INT >= 11) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
else {
task.execute();
}
}
}

测试代码如下:
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        scanButton = (Button) findViewById(R.id.scan);
        showView = (TextView) findViewById(R.id.show);
        scanButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent startScan = new Intent(MainActivity.this, CaptureActivity.class);
                //startActivity(startScan);
                startActivityForResult(startScan, 0);
            }
        });
    }

该测试在eclipse下没问题,只是在android studio1.3.2有此问题,烦请各位赐教!
------解决思路----------------------
两种解决办法:
1.如果是java8,请降低版本
2.task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)改为
   task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,null)
  相关解决方案