如何从 'com.gluonhq.impl.charm.down.plugins.android.*' 导入 Gluon Mobile 的自定义图片服务

How Do I Import From 'com.gluonhq.impl.charm.down.plugins.android.*' For Custom PicturesService for Gluon Mobile

我不喜欢 gluon PicturesService 在拍照或从 phone 的图库中选择时只给你一个 javafx Image 对象,所以经过大量搜索我最终做出了FilePicturesService 通过调整源代码。相反,此服务 return 图像的 JPEG 文件的字节数组。

这对 IOS 本机代码来说效果很好。我构建了自己的 FPictures.h 和 FPicture.m 文件,并将 IOSPicturesService 代码复制到我的项目中以创建我自己的自定义服务。用于创建自定义服务的教程是 here.

我认为此服务的 android 部分会比较简单。使用已经为 IOS 代码定义的服务接口,我所要做的就是将 AndroidPicturesService.java 复制到我的 AndroidFilePicturesService.java 并调整 class 名称和 return 类型。但是,当我尝试这样做时,出现了这个错误:

package com.gluonhq.impl.charm.down.plugins.android does not exist

下面是受此影响的两个导入语句。

AndroidFilePicturesService.java

package com.gluonhq.charm.down.plugins.android;

...

import com.gluonhq.impl.charm.down.plugins.android.FileUtils;
import com.gluonhq.impl.charm.down.plugins.android.PermissionRequestActivity;

...

public class AndroidFilePicturesService implements FilePicturesService {

    ...

    @Override
    public Optional<byte[]> takePhoto(boolean savePhoto) {
        ...
    }

    ...
}

AndroidManifest.xml

<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.multiplatformgluonapplication" android:versionCode="1" android:versionName="1.0">
    <supports-screens android:xlargeScreens="true"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="21"/>
    <application android:label="MultiplatformGluonApplication" android:name="android.support.multidex.MultiDexApplication" android:icon="@mipmap/ic_launcher">
            <activity android:name="javafxports.android.FXActivity" android:label="MultiplatformGluonApplication" android:screenOrientation="portrait" android:configChanges="orientation|screenSize">
                    <meta-data android:name="main.class" android:value="com.multiplatformgluonapplication.MultiplatformGluonApplication"/>
                    <meta-data android:name="debug.port" android:value="0"/>
                    <intent-filter>
                            <action android:name="android.intent.action.MAIN"/>
                            <category android:name="android.intent.category.LAUNCHER"/>
                    </intent-filter>
            </activity>

            <activity android:name="com.gluonhq.impl.charm.down.plugins.android.PermissionRequestActivity" />
    </application>

我该如何解决这个错误?我不知道从哪里开始?

如果您正在做定制服务,但您仍然依赖 Charm Down 核心 classes,您需要他们来构建它。

您必须使用 com.gluonhq.charm.down 包,因此您可以使用 Charm Down core 包中的 ServicesServiceFactory classes。

至于PermissionRequestActivityclass这是core-Androidpackage的一部分。

在你的项目中你可以只添加这个依赖:

dependencies {
    androidCompile 'com.gluonhq:charm-down-core-android:3.7.0'
}

至于FileUtilsclass,这是图片服务的一部分Androidimplementation

如果您要自己实现此服务,请将此 class 复制到您的项目中,或者将其添加为依赖项:

dependencies {
    androidCompile 'com.gluonhq:charm-down-core-android:3.7.0'
    androidCompile 'com.gluonhq:charm-down-pictures-android:3.7.0'
}