Hux*_*ell 3 android opencv parcelable
我试图将 CvCameraViewFrame 或 Mat 发送到另一个活动,但它们没有实现 Serializable 或 Parcelable 并且为它们创建一个包装类只是为了使用它一次似乎有点矫枉过正。我该如何进行?
我会使用片段而不是活动,并Mat从片段中获取/设置容器活动中的公共存在。
如果需要坚持多个活动,假设它在流程中,则选项是
共享- 使用全局Application子类来获取/设置Mat最好的东西,比如HashMap<String, WeakReference<Mat>>在活动中传递 HashMap 的键字符串(1)。确保您存储了对Matbefore child 活动完成的强引用onResume(),否则Mat可能会被垃圾收集。
复制- 使用getNativeObjAddr( 2 ) 并将long地址值作为调用 Intent 的一部分传递。子活动将Mat使用本机地址(3)重新创建。Mat在子活动中克隆是必要的,因为在onResume子活动完成后的任何时间都可以终止父活动。
示例如下。
// In parent activity
Mat img = ...;
long addr = img.getNativeObjAddr();
Intent intent = new Intent(this, B.class);
intent.putExtra( "myImg", addr );
startActivity( intent );
//In child activity
long addr = intent.getLongExtra("myImg", 0);
Mat tempImg = new Mat( addr );
Mat img = tempImg.clone();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1655 次 |
| 最近记录: |