这个代码以前工作但是在Android 4.2和OpenCV 2.4.4上它失败了,但我不知道为什么.任何人都可以为我解释它吗?
谢谢你的帮助.
巴兹
public void SaveImage (Mat mat) {
Mat mIntermediateMat = new Mat();
Imgproc.cvtColor(mRgba, mIntermediateMat, Imgproc.COLOR_RGBA2BGR, 3);
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String filename = "barry.png";
File file = new File(path, filename);
Boolean bool = null;
filename = file.toString();
bool = Highgui.imwrite(filename, mIntermediateMat);
if (bool == true)
Log.d(TAG, "SUCCESS writing image to external storage");
else
Log.d(TAG, "Fail writing image to external storage");
}
Run Code Online (Sandbox Code Playgroud)
bool每次都会回来假.对于用户#0,文件路径/名称应该是("storage/emulated/0/Pictures/barry.png"),并且目录是在那里.
什么可以使imwrite返回false?
我可以将mat转换为bmp并自己保存(我在非OpenCV应用程序中执行其他操作)但是因为Highgui.imwrite在那里,并且这段代码在我写入2.4.0并在Android上测试时曾经工作过3.x,如果可以,我想用它.
非常感谢
巴兹
我成功地使用zxing扫描代码,通过调用已安装的条形码阅读器的意图,但是当它发出蜂鸣声并指示良好的扫描时,我希望zxing活动将返回控制,以便我可以处理结果,但它坐在那里并尝试再次扫描.我必须按下后退按钮,然后它返回,我可以执行下一步.当我打电话给扫描仪时,是否有一些明显的标志?
任何建议都感激不尽.非常感谢.
这是我的代码:
public boolean onTouchEvent(final MotionEvent event) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
return true;
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
String s = "http://www.google.com/search?q=";
s += contents;
Intent myIntent1 = new Intent(Intent.ACTION_VIEW, Uri.parse(s));
startActivity(myIntent1);
}
else
if (resultCode == RESULT_CANCELED) {
// Handle …Run Code Online (Sandbox Code Playgroud) 我的代码是:
public static void ToastMemoryShort (Context context) {
CharSequence text = getString(R.string.toast_memoryshort); //error here
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
return;
}
Run Code Online (Sandbox Code Playgroud)
但我得到"无法在Eclipse中对类型Context"中的非静态方法getString(int)进行静态引用.我正在准备本地化我的应用程序(将所有硬编码字符串转换为资源),所以我在哪里:
getString(R.string.toast_memoryshort)
Run Code Online (Sandbox Code Playgroud)
我之前有一个硬编码的字符串,很好.
我不确定这里发生了什么(Java noob).请问有人可以开导我吗?
非常感谢
巴兹
我很难将我的应用与特定的文件类型(.stl)相关联.保荐这里凯文没有任何效果.尝试从文件管理器启动文件时,我的应用程序不是建议的选项之一.
他的代码是:
<activity name="com.mycompany.MyActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="application/pdf" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
(除非我有stl而不是pdf).我已经尝试了我能找到的这个主题的所有变化.
系统似乎没有意识到我的应用程序可用于打开此类文件.我做了些蠢事吗?
非常感谢任何建议.
编辑:
我有答案.基本上你必须声明你允许任何旧的mimetype并依赖文件扩展名.使用'正确'的mimetype(application/sla)不起作用.这有效:
<data android:scheme="file"
android:mimeType="*/*"
android:pathPattern=".*\\.stl" />
Run Code Online (Sandbox Code Playgroud)
现在,当我在Astro中选择一个文件时,我的应用程序被建议为打开这种文件的应用程序.
我正在尝试使用ProgressDialog并运行它.我的代码:
ProgressDialog dialog;
try {
dialog = new ProgressDialog(context);
dialog.setCancelable(true);
dialog.setMessage("Loading ...");
// set the progress to be horizontal
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// set the bar to the default value of 0
dialog.setProgress(0);
// set the maximum value
dialog.setMax(100);
// display the progressbar
dialog.show();
}
catch (Exception e1)
{
e1.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
在下面我创建我的后台线程来加载一些东西并更新进度条,但它永远不会那么远.在堆栈跟踪中,我得到"无法添加窗口 - 令牌null不适用于应用程序",但对话框似乎(在调试器中)拥有所有正确的东西,它不是null,但我得到了这个错误.
任何人都可以对此发光吗?