我目前正在尝试了解card.io Android Source的本机实现是如何工作的.为此,有可能调试本机C++代码.目前我的断点不受尊重.
我确实尝试了以下方法:
C++
APP_ABI := armeabi-v7a
APP_CFLAGS += -UNDEBUG -O0 -g -ggdb
APP_OPTIM := debug
APP_CPPFLAGS += -DDMZ_DEBUG=1
注意: 我使用的是带有Ubuntu 16.04(64位)的Android Studio 3.1,如果我创建一个支持C++的新项目,调试就完全正常了.
我们正在调试Android 7.0设备; 该项目正在使用NDK构建系统.
我们目前正在尝试实现将图像从移动设备(在本例中为iPhone)传输到桌面应用程序的过程。我们已经尝试了蓝牙串行插件,该插件可在Android上正常运行,但在扫描桌面应用程序时未列出任何设备。
为了涵盖iOS支持(AFAIK iOS仅支持BluetoothLE),我们重新实现了桌面应用程序以使用BluetoothLE并表现为外围设备。另外,我们更改了Ionic应用程序以使用BLE插件。
现在,BluetoothLE仅支持传输大小为20 Byte的包,而我们的映像大约为500kb。因此,我们显然可以将图像拆分为多个块,并使用以下函数进行传输(取自该要点):
function writeLargeData(buffer) {
console.log('writeLargeData', buffer.byteLength, 'bytes in',MAX_DATA_SEND_SIZE, 'byte chunks.');
var chunkCount = Math.ceil(buffer.byteLength / MAX_DATA_SEND_SIZE);
var chunkTotal = chunkCount;
var index = 0;
var startTime = new Date();
var transferComplete = function () {
console.log("Transfer Complete");
}
var sendChunk = function () {
if (!chunkCount) {
transferComplete();
return; // so we don't send an empty buffer
}
console.log('Sending data chunk', chunkCount + '.');
var chunk = buffer.slice(index, …Run Code Online (Sandbox Code Playgroud) 我实现了向产品new&edit页面添加自定义选项卡/网格,其中包含输入字段.遵循本教程
问题是它没有保存数据输入.在这一点上,我不知道这是否实际上没有在教程中涵盖,或者我犯了一个错误.
这足以保存数据输入吗?
$customFieldValue = $this->_getRequest()->getPost('custom_field');
$product->save();
Run Code Online (Sandbox Code Playgroud)
我怎么能在后端调试这个值?
我们正试图滚动到一个特定<mat-expansion-panel>内的项目<mat-accordion>。问题是ngAfterViewInit()在手风琴及其面板完全加载之前触发。这意味着在scrollIntoView()加载手风琴时调用该函数,然后页面大小发生变化,使我们的滚动操作将我们带到错误的页面位置。
我们还尝试了其他生命周期钩子,但没有帮助,因为它们都被提前调用了。有人对这个问题有什么好的做法吗?
我们的源代码很简单,因为我们正在尝试实现一些非常基本的东西:
登陆页面.component.html
<mat-accordion>
<mat-expansion-panel id="pangel-1">
<mat-expansion-panel-header>
<mat-panel-title>Lorem ipsum</mat-panel-title>
</mat-expansion-panel-header>
<p>
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt...
</p>
</mat-expansion-panel>
<mat-expansion-panel id="panel-2">
<mat-expansion-panel-header>
<mat-panel-title>Lorem ipsum</mat-panel-title>
</mat-expansion-panel-header>
<p>
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt...
</p>
</mat-expansion-panel>
[ ... ] // more panels
</mat-accordion>
Run Code Online (Sandbox Code Playgroud)
登陆页面.component.ts
ngAfterViewInit() {
this.scroll("panel-1");
}
scroll(id) {
console.log(`scrolling to ${id}`);
let el = document.getElementById(id); …Run Code Online (Sandbox Code Playgroud) 在我们的应用程序更新后,我们现在使用Camera2 API,遗憾的是预览在我们的测试设备上拉伸:Samsung SM-J330F/DS,Android-Version 8.0.0,API 26
因为我们在同一设备上没有遇到Googles Camera2Basic项目的这个问题,所以我们尝试调整我们的项目以使用相同的预览实现.目前我们无法弄清楚两个项目之间不同预览的确切原因.
这是预期的:
与Camera2Basic项目相比,我们RelativeLayout在Activity类中以编程方式创建,AutoFitTextureView然后将其添加到此对象:
mMainLayout = new FrameLayout(this);
mMainLayout.setBackgroundColor(Color.BLACK);
mMainLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
mPreview = new AutoFitTextureView(this);
mPreview.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, Gravity.TOP));
mMainLayout.addView(mPreview);
this.setContentView(mMainLayout);
Run Code Online (Sandbox Code Playgroud)
实现AutoFitTextureView与Camera2Basic项目相同.
稍后在将预览设置setUpCameraOutputs()为640x480像素(所有设备应支持的分辨率)之后的Camera2类中,我们调用setAspectRatio(width, height)mPreview:
mPreviewSize = new Size(640, 480);
if (mFrameOrientation == Configuration.ORIENTATION_LANDSCAPE) {
mTextureView.setAspectRatio(
mPreviewSize.getWidth(), mPreviewSize.getHeight()
);
} else {
mTextureView.setAspectRatio(
mPreviewSize.getHeight(), mPreviewSize.getWidth()
);
}
Run Code Online (Sandbox Code Playgroud)
注意:同样在较新的设备上(如荣誉10),预览看起来很好.
我目前正在设置我的前端环境,无法弄清楚如何组合节点模块以正确使用 gulp。最初我想使用 bower,但是因为 bower 博客上什至推荐使用 yarn 我改变了主意。并且因为我的项目中已经使用了 nodejs,所以我来到了这个问题。
例如,如果我现在想安装 Bootstrap 4,我的代码段可能如下所示:
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var sass = require('gulp-sass');
// Compile sass into CSS & auto-inject into browsers
gulp.task('sass', function() {
return gulp.src(['node_modules/bootstrap/scss/bootstrap.scss', 'src/scss/*.scss'])
.pipe(sass())
.pipe(gulp.dest("src/css"))
.pipe(browserSync.stream());
});
// Move the javascript files into our /src/js folder
gulp.task('js', function() {
return gulp.src(['node_modules/bootstrap/dist/js/bootstrap.min.js', 'node_modules/jquery/dist/jquery.min.js', 'node_modules/tether/dist/js/tether.min.js'])
.pipe(gulp.dest("src/js"))
.pipe(browserSync.stream());
});
Run Code Online (Sandbox Code Playgroud)
我对这个片段的问题是,我必须检查我安装的每个模块所需文件的路径,并在多个地方更改 gulpfile。所以我的问题是,对于这个问题是否有更好/更简单的工作流程。
通过 camera2 API,我们接收到格式为YUV_420_888的 Image 对象。然后我们使用以下函数转换为NV21:
private static byte[] YUV_420_888toNV21(Image image) {
byte[] nv21;
ByteBuffer yBuffer = image.getPlanes()[0].getBuffer();
ByteBuffer uBuffer = image.getPlanes()[1].getBuffer();
ByteBuffer vBuffer = image.getPlanes()[2].getBuffer();
int ySize = yBuffer.remaining();
int uSize = uBuffer.remaining();
int vSize = vBuffer.remaining();
nv21 = new byte[ySize + uSize + vSize];
//U and V are swapped
yBuffer.get(nv21, 0, ySize);
vBuffer.get(nv21, ySize, vSize);
uBuffer.get(nv21, ySize + vSize, uSize);
return nv21;
}
Run Code Online (Sandbox Code Playgroud)
虽然此函数与 配合良好cameraCaptureSessions.setRepeatingRequest,但在调用 时,我们会在进一步处理(在 JNI 端)中遇到分段错误cameraCaptureSessions.capture。两者都通过 ImageReader 请求 YUV_420_888 …