如何将Android Studio项目转换为Appcelerator Titanium模块

问题描述 投票:1回答:2

嗨!因此,我有本教程,并提出了一些问题。

Titanium-AndroidStudio

简而言之,它显示了如何在Android Studio上打开Appcelerator库,并使用它来开发模块。

我需要的是另一种方式。

我有一个AndroidStudio项目,需要“转换”为Appcelerator Titanium模块。 Java代码不是问题,因为Java是Java。但是有很多事情要考虑。 Android Studio使用它自己的屏幕/按钮/视图实现,Appcelerator模块是用Eclipse制造的纯Java,屏幕,视图,按钮等是使用Titanium框架内的Javascript创建的。

我要举一个例子。

这是来自Android Studio的摘录。

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    requestPermissions();
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    setContentView(R.layout.activity_tire_scan);

    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    if (audioManager != null) { 
        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 20, 0);
    }

    btnAccept = findViewById(R.id.btnAccept);
    mOpenCvCameraView = findViewById(R.id.java_camera_View);
    mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
    mOpenCvCameraView.setCvCameraViewListener(this);
}

因此,我们有一些Java代码可以完成某些工作,并且我们还具有与Java代码相关的App本身的行为,例如摄像机视图和按钮。

如何从此代码段中删除“可视”代码,并将其与Appcelerator Javascript代码相关。

例如,此按钮必须在appcelerator内部构建,如下所示:

var VBtn = Ti.UI.createButton({
    title: 'CameraButton',
    bottom: 50,
});

我不知道我是否清楚,但我希望你能理解我。

基本上,如何将项目从Android Studio迁移到Appcelerator模块并在Titanium内部使用它。

提前感谢。

javascript java android android-studio appcelerator
2个回答
2
投票

虽然这是一个很棒的教程,但它已经过时了。从Titanium 9.0.0开始,更容易使用Android Studio。看看:https://dev.to/miga/using-android-studio-to-develop-titanium-modules-2jc4如何启动和运行它。

另一部分也不正确。您可以在模块(甚至在Hyperloop)中使用本机UI元素:

这甚至会创建一个自定义视图,您可以像以后在此控制器中使用此<VonageView module="ti.vonage" id="vonage"/>

注意:与其他Frameworks不同,Titanium使用本机UI元素,而UI和逻辑之间的连接/代码层仅使用JS。

keepScreenOn已包含在SDK中:http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.View-property-keepScreenOn

[如果缺少其他部分,例如setStreamVolume,您甚至可以将它们添加到SDK中(例如,此处TiSound),因为它是开源的,并且可能对其他人也有用。


0
投票

错误:

ERROR] :  KrollProxy: (main) [89,89] Error creating proxy
[ERROR] :  KrollProxy: java.lang.IllegalAccessException: void com.itire.budini.ItiremoduleModule.<init>() is not accessible from java.lang.Class<org.appcelerator.kroll.KrollProxy>

摘要:

    @Kroll.proxy(creatableInModule = ItiremoduleModule.class)
        public class ItireViewProxy extends TiViewProxy 
{
    @Kroll.proxy
    private class ItireView extends TiUIView
{

    public ItireView(TiViewProxy proxy) {
        super(proxy);

        String packageName = proxy.getActivity().getPackageName();
        Resources resources = proxy.getActivity().getResources();

        int java_camera_View = resources.getIdentifier("java_camera_View", "id", packageName);
    }
}

@Override
@Kroll.method
public TiUIView createView(Activity activity) {
    TiUIView view = new ItireView(this);
    view.getLayoutParams().autoFillsHeight = true;
    view.getLayoutParams().autoFillsWidth = true;
    return view;
}

}

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:itiremodule="http://schemas.android.com/apk/lib/com.itire.budini"
xmlns:opencv="http://schemas.android.com/apk/lib/com.itire.budini"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.etech.opencvtest320.ItiremoduleModule">

<com.example.etech.opencvtest320.PortraitCameraView
    android:id="@+id/java_camera_View"
    android:layout_width="379dp"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:visibility="visible"
    opencv:camera_id="any"
    opencv:show_fps="true" />

<Button
    android:id="@+id/btnAccept"
    style="?android:attr/borderlessButtonStyle"
    android:layout_width="375dp"
    android:layout_height="76dp"
    android:layout_alignParentBottom="true"
    android:layout_centerInParent="true"
    android:layout_marginBottom="32dp"
    android:background="@android:color/darker_gray"
    android:onClick="scanAgain"
    android:text="Scanning iTread..."
    android:textAllCaps="false"
    android:textColor="#1F2025"
    android:textSize="18sp"
    android:visibility="visible" />

</RelativeLayout>

可能有什么问题吗?该代码段基本上是您制作的vonageView的副本,我只是看它是否可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.