2017-03-02 25 views
1

我試圖改變使用codenameone android手機屏保,所以對於這一點,我使用的是原生的界面程序,屏幕保護程序,創建使用nativeInterface

我然後創建我的主類,然後後,我創建「MyNativeContent」從NativeInterface繼承,

這裏是內容: package com.faugan.addscreen;

import com.codename1.system.NativeInterface; 

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

現在我把我的界面上點擊右鍵生成所有平臺的本地接入,

再經過我打開MyNativeContentImpl.java從我的android目錄,我做這個裏面:

package com.faugan.addscreen; 

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

    public boolean isSupported() { 
     return true; 
    } 

} 

現在,當我編譯此,失敗了,我有這樣的錯誤:

java.lang.ClassNotFoundExcepti於: com.faugan.addscreen.MyNativeContentImpl 在java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在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.crea te(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)渲染幀耗時過長722毫秒 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(Runnable Wrapper.java:120) at com.codename1.impl.CodenameOneThread.run(CodenameOneThread。Java的:176)

現在我的問題是:

1),而我有這些錯誤?是因爲它在模擬器中運行?

2)你能告訴我怎麼把testAndroidNatif()方法改成android手機上的屏保程序?

感謝

回答

1

你應該通過創建MyNativeContent接口,擴展NativeInterface開始,然後在其上單擊鼠標右鍵,選擇生成本地訪問

切換到文件選項卡並展開文件夾native - >android - >com - >faugan - >addscreen。然後打開MyNativeContentImpl.java文件,這是您的所有Android本機代碼將被添加的位置。

您可以在此文件夾中添加更多的android文件,並在MyNativeContentImpl.java文件中引用它們。請記住在方法MyNativeContentImpl中返回true。

至於你的第二個問題,這是Android特定的,你必須自己做或使用androidjava標籤或在sample codes to change screensaver from an Android App上搜索StackOverflow。看看這個問題在SO上舉例... android-screen-saver-sample-code

+0

對於第一個問題,我仍然有錯誤,但對於第二個,你發送的鏈接,我只是看到一個XML內容作爲代碼,如何我可以將它整合到codenameone中嗎?我不知道原生的android編碼,你可以請舉一個例子,其中你使用codenameone和集成android本地代碼裏面?謝謝 –