java - 使用 nativeInterface 创建屏保

标签 java android codenameone

我正在尝试使用 codenameone 更改 android 手机上的屏幕保护程序,为此,我正在使用 native 界面进程,

然后我创建我的主类,然后在我创建从 NativeInterface 继承的“MyNativeContent”之后,

内容如下: 包 com.faugan.addscreen;

import com.codename1.system.NativeInterface;

/**
 *
 * @author ccpita
 */
public interface MyNativeContent extends NativeInterface{
    public void testAndroidNatif();
}

现在我右键单击我的界面以生成所有平台的 native 访问,

然后在我从我的 android 目录打开 MyNativeContentImpl.java 之后,我在里面执行此操作:

package com.faugan.addscreen;

public class MyNativeContentImpl {
    public void testAndroidNatif() {
        // code for screensaver on android
    }

    public boolean isSupported() {
        return true;
    }

}

现在当我编译这个时,它失败了,我有这个错误:

java.lang.ClassNotFoundException: com.faugan.addscreen.MyNativeContentImpl at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.ClassLoader.findSystemClass(ClassLoader.java:1001) at com.codename1.impl.javase.ClassPathLoader.findClass(ClassPathLoader.java:100) at com.codename1.impl.javase.ClassPathLoader.loadClass(ClassPathLoader.java:50) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at com.codename1.system.NativeLookup.create(NativeLookup.java:81) at com.faugan.addscreen.MyApplication.lambda$start$0(MyApplication.java:47) at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:349) at com.codename1.ui.Component.pointerReleased(Component.java:3260) at com.codename1.ui.Form.pointerReleased(Form.java:2651) at com.codename1.ui.Component.pointerReleased(Component.java:3239) Rendering frame took too long 722 milliseconds at com.codename1.ui.Display.handleEvent(Display.java:2025) at com.codename1.ui.Display.edtLoopImpl(Display.java:1070) at com.codename1.ui.Display.mainEDTLoop(Display.java:999) at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120) at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176) java.lang.NullPointerException at com.faugan.addscreen.MyApplication.lambda$start$0(MyApplication.java:48) at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:349) at com.codename1.ui.Component.pointerReleased(Component.java:3260) at com.codename1.ui.Form.pointerReleased(Form.java:2651) at com.codename1.ui.Component.pointerReleased(Component.java:3239) at com.codename1.ui.Display.handleEvent(Display.java:2025) at com.codename1.ui.Display.edtLoopImpl(Display.java:1070) at com.codename1.ui.Display.mainEDTLoop(Display.java:999) at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120) at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

现在我的问题是:

1) 当我遇到这些错误时?是因为这是在模拟器中运行吗?

2) 你能告诉我在 testAndroidNatif() 方法中输入什么来更改 android 手机上的屏幕保护程序吗?

谢谢

最佳答案

您应该首先创建 MyNativeContent扩展接口(interface) NativeInterface ,然后右键单击它并选择生成 native 访问

切换到"file"选项卡并展开文件夹 native -> android -> com -> faugan -> addscreen .然后打开MyNativeContentImpl.java文件,这是将添加所有 Android native 代码的地方。

您可以在此文件夹中添加更多android 文件并在MyNativeContentImpl.java 中引用它们文件。记得在 isSupported() 中返回 true MyNativeContentImpl的方法| .

至于你的第二个问题,这是 Android 特有的,你必须自己做或在 StackOverflow 上用 android 提问和 java标记或搜索 sample codes to change screensaver from an Android App .例如,看看关于 SO 的这个问题... android-screen-saver-sample-code

关于java - 使用 nativeInterface 创建屏保,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42553397/

相关文章:

带有单选按钮的Android可扩展 ListView

java - 在 Kotlin 中使用 Java Void 类型

java - 我如何将信息从 ant 传递到 sql 文件或过程

javascript - Phonegap navigator.notifications 不执行任何操作

android - 如何在 SQLite 中将 like 子句与 db.query(....) 一起使用

ios - 代号一的音频播放在 iOS 上崩溃

java - codenameone 的同步连接请求

android - 无法在服务器上构建 Android 应用程序 - 找不到 android.support.v4.app.Fragment 的类文件

java - 如何使用 GSON 编辑/更改 JSON 文件中的值?

java - 为什么 SwitchCompat 不能在 Android Studio 上运行?