Initial commit for the jME3 Tests template project configured as an Android project
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10382 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
142905654f
commit
9bb4efdeb5
1
sdk/JME3TestsTemplateAndroid/MANIFEST.MF
Normal file
1
sdk/JME3TestsTemplateAndroid/MANIFEST.MF
Normal file
@ -0,0 +1 @@
|
||||
X-Comment: Created with jMonkeyPlatform
|
76
sdk/JME3TestsTemplateAndroid/build.xml
Normal file
76
sdk/JME3TestsTemplateAndroid/build.xml
Normal file
@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- You may freely edit this file. See commented blocks below for -->
|
||||
<!-- some examples of how to customize the build. -->
|
||||
<!-- (If you delete it and reopen the project it will be recreated.) -->
|
||||
<!-- By default, only the Clean and Build commands use this build script. -->
|
||||
<!-- Commands such as Run, Debug, and Test only use this build script if -->
|
||||
<!-- the Compile on Save feature is turned off for the project. -->
|
||||
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
|
||||
<!-- in the project's Project Properties dialog box.-->
|
||||
<project name="BasicGameTemplate" default="default" basedir=".">
|
||||
<description>Builds, tests, and runs the project BasicGameTemplate.</description>
|
||||
<import file="nbproject/build-impl.xml"/>
|
||||
|
||||
<!--
|
||||
|
||||
There exist several targets which are by default empty and which can be
|
||||
used for execution of your tasks. These targets are usually executed
|
||||
before and after some main targets. They are:
|
||||
|
||||
-pre-init: called before initialization of project properties
|
||||
-post-init: called after initialization of project properties
|
||||
-pre-compile: called before javac compilation
|
||||
-post-compile: called after javac compilation
|
||||
-pre-compile-single: called before javac compilation of single file
|
||||
-post-compile-single: called after javac compilation of single file
|
||||
-pre-compile-test: called before javac compilation of JUnit tests
|
||||
-post-compile-test: called after javac compilation of JUnit tests
|
||||
-pre-compile-test-single: called before javac compilation of single JUnit test
|
||||
-post-compile-test-single: called after javac compilation of single JUunit test
|
||||
-pre-jar: called before JAR building
|
||||
-post-jar: called after JAR building
|
||||
-post-clean: called after cleaning build products
|
||||
|
||||
(Targets beginning with '-' are not intended to be called on their own.)
|
||||
|
||||
Example of inserting an obfuscator after compilation could look like this:
|
||||
|
||||
<target name="-post-compile">
|
||||
<obfuscate>
|
||||
<fileset dir="${build.classes.dir}"/>
|
||||
</obfuscate>
|
||||
</target>
|
||||
|
||||
For list of available properties check the imported
|
||||
nbproject/build-impl.xml file.
|
||||
|
||||
|
||||
Another way to customize the build is by overriding existing main targets.
|
||||
The targets of interest are:
|
||||
|
||||
-init-macrodef-javac: defines macro for javac compilation
|
||||
-init-macrodef-junit: defines macro for junit execution
|
||||
-init-macrodef-debug: defines macro for class debugging
|
||||
-init-macrodef-java: defines macro for class execution
|
||||
-do-jar-with-manifest: JAR building (if you are using a manifest)
|
||||
-do-jar-without-manifest: JAR building (if you are not using a manifest)
|
||||
run: execution of project
|
||||
-javadoc-build: Javadoc generation
|
||||
test-report: JUnit report generation
|
||||
|
||||
An example of overriding the target for project execution could look like this:
|
||||
|
||||
<target name="run" depends="BasicGameTemplate-impl.jar">
|
||||
<exec dir="bin" executable="launcher.exe">
|
||||
<arg file="${dist.jar}"/>
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
Notice that the overridden target depends on the jar target and not only on
|
||||
the compile target as the regular run target does. Again, for a list of available
|
||||
properties which you can use, check the target you are overriding in the
|
||||
nbproject/build-impl.xml file.
|
||||
|
||||
-->
|
||||
|
||||
</project>
|
22
sdk/JME3TestsTemplateAndroid/master-application.jnlp
Normal file
22
sdk/JME3TestsTemplateAndroid/master-application.jnlp
Normal file
@ -0,0 +1,22 @@
|
||||
<jnlp spec="1.0+" codebase="${jnlp.codebase}" href="launch.jnlp">
|
||||
<information>
|
||||
<title>${APPLICATION.TITLE}</title>
|
||||
<vendor>${APPLICATION.VENDOR}</vendor>
|
||||
<homepage href="${APPLICATION.HOMEPAGE}"/>
|
||||
<description>${APPLICATION.DESC}</description>
|
||||
<description kind="short">${APPLICATION.DESC.SHORT}</description>
|
||||
<!--${JNLP.ICONS}-->
|
||||
<!--${JNLP.OFFLINE.ALLOWED}-->
|
||||
</information>
|
||||
<!--${JNLP.SECURITY}-->
|
||||
<resources>
|
||||
<!--${JNLP.RESOURCES.RUNTIME}-->
|
||||
<!--${JNLP.RESOURCES.MAIN.JAR}-->
|
||||
<!--${JNLP.RESOURCES.JARS}-->
|
||||
<jar href='lib/assets.jar'/>
|
||||
<!--${JNLP.RESOURCES.EXTENSIONS}-->
|
||||
</resources>
|
||||
<application-desc main-class="${jnlp.main.class}">
|
||||
<!--${JNLP.APPLICATION.ARGS}-->
|
||||
</application-desc>
|
||||
</jnlp>
|
15
sdk/JME3TestsTemplateAndroid/mobile/AndroidManifest.xml
Normal file
15
sdk/JME3TestsTemplateAndroid/mobile/AndroidManifest.xml
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.jmonkeyengine.tests">
|
||||
<application android:label="@string/app_name">
|
||||
<activity android:label="@string/app_name" android:name="MainActivity" android:launchMode="singleTask">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:label="@string/app_name" android:name="TestsHarness" android:launchMode="singleTask" android:screenOrientation="landscape">
|
||||
</activity>
|
||||
</application>
|
||||
<uses-sdk android:minSdkVersion="8"/>
|
||||
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true"/>
|
||||
</manifest>
|
17
sdk/JME3TestsTemplateAndroid/mobile/ant.properties
Normal file
17
sdk/JME3TestsTemplateAndroid/mobile/ant.properties
Normal file
@ -0,0 +1,17 @@
|
||||
# This file is used to override default values used by the Ant build system.
|
||||
#
|
||||
# This file must be checked into Version Control Systems, as it is
|
||||
# integral to the build system of your project.
|
||||
|
||||
# This file is only used by the Ant script.
|
||||
|
||||
# You can use this to override default values such as
|
||||
# 'source.dir' for the location of your java source folder and
|
||||
# 'out.dir' for the location of your output folder.
|
||||
|
||||
# You can also use it define how the release builds are signed by declaring
|
||||
# the following properties:
|
||||
# 'key.store' for the location of your keystore and
|
||||
# 'key.alias' for the name of the key to use.
|
||||
# The password will be asked during the build when you use the 'release' target.
|
||||
|
92
sdk/JME3TestsTemplateAndroid/mobile/build.xml
Normal file
92
sdk/JME3TestsTemplateAndroid/mobile/build.xml
Normal file
@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="jMonkeyEngine Test Applications" default="help">
|
||||
|
||||
<!-- The local.properties file is created and updated by the 'android' tool.
|
||||
It contains the path to the SDK. It should *NOT* be checked into
|
||||
Version Control Systems. -->
|
||||
<property file="local.properties" />
|
||||
|
||||
<!-- The ant.properties file can be created by you. It is only edited by the
|
||||
'android' tool to add properties to it.
|
||||
This is the place to change some Ant specific build properties.
|
||||
Here are some properties you may want to change/update:
|
||||
|
||||
source.dir
|
||||
The name of the source directory. Default is 'src'.
|
||||
out.dir
|
||||
The name of the output directory. Default is 'bin'.
|
||||
|
||||
For other overridable properties, look at the beginning of the rules
|
||||
files in the SDK, at tools/ant/build.xml
|
||||
|
||||
Properties related to the SDK location or the project target should
|
||||
be updated using the 'android' tool with the 'update' action.
|
||||
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems.
|
||||
|
||||
-->
|
||||
<property file="ant.properties" />
|
||||
|
||||
<!-- if sdk.dir was not set from one of the property file, then
|
||||
get it from the ANDROID_HOME env var.
|
||||
This must be done before we load project.properties since
|
||||
the proguard config can use sdk.dir -->
|
||||
<property environment="env" />
|
||||
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
|
||||
<isset property="env.ANDROID_HOME" />
|
||||
</condition>
|
||||
|
||||
<!-- The project.properties file is created and updated by the 'android'
|
||||
tool, as well as ADT.
|
||||
|
||||
This contains project specific properties such as project target, and library
|
||||
dependencies. Lower level build properties are stored in ant.properties
|
||||
(or in .classpath for Eclipse projects).
|
||||
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems. -->
|
||||
<loadproperties srcFile="project.properties" />
|
||||
|
||||
<!-- quick check on sdk.dir -->
|
||||
<fail
|
||||
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
|
||||
unless="sdk.dir"
|
||||
/>
|
||||
|
||||
<!--
|
||||
Import per project custom build rules if present at the root of the project.
|
||||
This is the place to put custom intermediary targets such as:
|
||||
-pre-build
|
||||
-pre-compile
|
||||
-post-compile (This is typically used for code obfuscation.
|
||||
Compiled code location: ${out.classes.absolute.dir}
|
||||
If this is not done in place, override ${out.dex.input.absolute.dir})
|
||||
-post-package
|
||||
-post-build
|
||||
-pre-clean
|
||||
-->
|
||||
<import file="custom_rules.xml" optional="true" />
|
||||
|
||||
<!-- Import the actual build file.
|
||||
|
||||
To customize existing targets, there are two options:
|
||||
- Customize only one target:
|
||||
- copy/paste the target into this file, *before* the
|
||||
<import> task.
|
||||
- customize it to your needs.
|
||||
- Customize the whole content of build.xml
|
||||
- copy/paste the content of the rules files (minus the top node)
|
||||
into this file, replacing the <import> task.
|
||||
- customize to your needs.
|
||||
|
||||
***********************
|
||||
****** IMPORTANT ******
|
||||
***********************
|
||||
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
|
||||
in order to avoid having your file be overridden by tools such as "android update project"
|
||||
-->
|
||||
<!-- version-tag: 1 -->
|
||||
<import file="${sdk.dir}/tools/ant/build.xml" />
|
||||
|
||||
</project>
|
20
sdk/JME3TestsTemplateAndroid/mobile/proguard-project.txt
Normal file
20
sdk/JME3TestsTemplateAndroid/mobile/proguard-project.txt
Normal file
@ -0,0 +1,20 @@
|
||||
# To enable ProGuard in your project, edit project.properties
|
||||
# to define the proguard.config property as described in that file.
|
||||
#
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in ${sdk.dir}/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the ProGuard
|
||||
# include property in project.properties.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
14
sdk/JME3TestsTemplateAndroid/mobile/project.properties
Normal file
14
sdk/JME3TestsTemplateAndroid/mobile/project.properties
Normal file
@ -0,0 +1,14 @@
|
||||
# This file is automatically generated by Android Tools.
|
||||
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
|
||||
#
|
||||
# This file must be checked in Version Control Systems.
|
||||
#
|
||||
# To customize properties used by the Ant build system edit
|
||||
# "ant.properties", and override values to adapt the script to your
|
||||
# project structure.
|
||||
#
|
||||
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
|
||||
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
|
||||
|
||||
# Project target.
|
||||
target=android-8
|
BIN
sdk/JME3TestsTemplateAndroid/mobile/res/drawable/monkey256.png
Normal file
BIN
sdk/JME3TestsTemplateAndroid/mobile/res/drawable/monkey256.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
BIN
sdk/JME3TestsTemplateAndroid/mobile/res/drawable/monkey512.png
Normal file
BIN
sdk/JME3TestsTemplateAndroid/mobile/res/drawable/monkey512.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 100 KiB |
Binary file not shown.
After Width: | Height: | Size: 108 KiB |
BIN
sdk/JME3TestsTemplateAndroid/mobile/res/drawable/nonselected.png
Normal file
BIN
sdk/JME3TestsTemplateAndroid/mobile/res/drawable/nonselected.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 134 B |
BIN
sdk/JME3TestsTemplateAndroid/mobile/res/drawable/selected.png
Normal file
BIN
sdk/JME3TestsTemplateAndroid/mobile/res/drawable/selected.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 124 B |
13
sdk/JME3TestsTemplateAndroid/mobile/res/layout/main.xml
Normal file
13
sdk/JME3TestsTemplateAndroid/mobile/res/layout/main.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
>
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Hello World, MainActivity"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
@ -0,0 +1,119 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/layoutTestChooser"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:background="#FFFFFF"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lblTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:text="Choose a demo to start:"
|
||||
android:textSize="20sp"
|
||||
android:textColor="#000000"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layoutFilter"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/lblTitle"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lblFindTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="10dp"
|
||||
android:text="Find:"
|
||||
android:textSize="20sp"
|
||||
android:textColor="#000000"
|
||||
/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtFilter"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:ems="10"
|
||||
android:hint="Enter a Filter"
|
||||
android:inputType="text"
|
||||
android:textSize="20sp"
|
||||
android:textColor="#000000"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layoutButtons"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:gravity="center"
|
||||
android:layout_marginTop="20dp"
|
||||
android:focusable="true"
|
||||
android:focusableInTouchMode="true"
|
||||
>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnOK"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="OK"
|
||||
android:layout_marginRight="20dp"
|
||||
android:textSize="20sp"
|
||||
android:textColor="#000000"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnCancel"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Cancel"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:textSize="20sp"
|
||||
android:textColor="#000000"
|
||||
/>
|
||||
<requestFocus/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@id/layoutButtons"
|
||||
android:layout_below="@id/layoutFilter"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/selected"
|
||||
>
|
||||
|
||||
<ListView
|
||||
android:id="@+id/listClasses"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:choiceMode="singleChoice"
|
||||
android:listSelector="@drawable/selected"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:scrollbars="vertical"
|
||||
android:fadeScrollbars="false"
|
||||
android:textFilterEnabled="true"
|
||||
>
|
||||
|
||||
</ListView>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/layoutTestChooserRow"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:padding="10dp">
|
||||
|
||||
<!--
|
||||
<ImageView android:id="@+id/imgIcon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_marginRight="15dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp" />
|
||||
-->
|
||||
|
||||
<TextView android:id="@+id/txtClassName"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:gravity="center_vertical"
|
||||
android:textStyle="bold"
|
||||
android:textSize="22sp"
|
||||
android:textColor="#000000"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp" />
|
||||
|
||||
</LinearLayout>
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<resources>
|
||||
<string name="app_name">jMonkeyEngine Test Applications</string>
|
||||
</resources>
|
@ -0,0 +1,168 @@
|
||||
/*
|
||||
* To change this template, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package com.jmonkeyengine.tests;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Filter;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CustomArrayAdapter extends ArrayAdapter<String> {
|
||||
private static final String TAG = "CustomArrayAdapter";
|
||||
|
||||
/* List of items */
|
||||
private List<String> entries;
|
||||
private Context activity;
|
||||
|
||||
/* Position of selected answer */
|
||||
private int selectedPosition = -1;
|
||||
/* Background Color of selected item */
|
||||
private int selectedBackgroundColor = 0xffff00;
|
||||
/* Background Color of non selected item */
|
||||
private int nonselectedBackgroundColor = 0x000000;
|
||||
/* Background Drawable Resource ID of selected item */
|
||||
private int selectedBackgroundResource = 0;
|
||||
/* Background Drawable Resource ID of non selected items */
|
||||
private int nonselectedBackgroundResource = 0;
|
||||
|
||||
/* Variables to support list filtering */
|
||||
private ArrayList<String> filteredEntries;
|
||||
private Filter filter;
|
||||
|
||||
public CustomArrayAdapter(Context context, int textViewResourceId, List<String> objects) {
|
||||
super(context, textViewResourceId, objects);
|
||||
activity = context;
|
||||
entries = new ArrayList<String>(objects);
|
||||
filteredEntries = new ArrayList<String>(objects);
|
||||
filter = new ClassNameFilter();
|
||||
}
|
||||
|
||||
/** Setter for selected item position */
|
||||
public void setSelectedPosition(int selectedPosition) {
|
||||
this.selectedPosition = selectedPosition;
|
||||
}
|
||||
|
||||
/** Setter for selected item background color */
|
||||
public void setSelectedBackgroundColor(int selectedBackgroundColor) {
|
||||
this.selectedBackgroundColor = selectedBackgroundColor;
|
||||
}
|
||||
|
||||
/** Setter for non selected background color */
|
||||
public void setNonSelectedBackgroundColor(int nonselectedBackgroundColor) {
|
||||
this.nonselectedBackgroundColor = nonselectedBackgroundColor;
|
||||
}
|
||||
|
||||
/** Setter for selected item background resource id*/
|
||||
public void setSelectedBackgroundResource(int selectedBackgroundResource) {
|
||||
this.selectedBackgroundResource = selectedBackgroundResource;
|
||||
}
|
||||
|
||||
/** Setter for non selected background resource id*/
|
||||
public void setNonSelectedBackgroundResource(int nonselectedBackgroundResource) {
|
||||
this.nonselectedBackgroundResource = nonselectedBackgroundResource;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
Log.i(TAG, "getView for position: " + position + " with selectedItem: " + selectedPosition);
|
||||
|
||||
View v = convertView;
|
||||
ViewHolder holder;
|
||||
if (v == null) {
|
||||
LayoutInflater vi =
|
||||
(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
v = vi.inflate(R.layout.test_chooser_row, null);
|
||||
holder = new ViewHolder();
|
||||
holder.textView = (TextView) v.findViewById(R.id.txtClassName);
|
||||
holder.layoutRow = (LinearLayout) v.findViewById(R.id.layoutTestChooserRow);
|
||||
v.setTag(holder);
|
||||
} else {
|
||||
holder=(ViewHolder)v.getTag();
|
||||
}
|
||||
|
||||
final String itemText = filteredEntries.get(position);
|
||||
if (itemText != null) {
|
||||
holder.textView.setText(itemText);
|
||||
if (position == selectedPosition) {
|
||||
Log.i(TAG, "setting Background Color to: " + selectedBackgroundColor);
|
||||
// holder.textView.setBackgroundColor(selectedBackgroundColor);
|
||||
// holder.textView.setBackgroundResource(selectedBackgroundResource);
|
||||
holder.layoutRow.setBackgroundResource(selectedBackgroundResource);
|
||||
} else {
|
||||
Log.i(TAG, "setting Background Color to: " + nonselectedBackgroundColor);
|
||||
// holder.textView.setBackgroundColor(nonselectedBackgroundColor);
|
||||
// holder.textView.setBackgroundResource(nonselectedBackgroundResource);
|
||||
holder.layoutRow.setBackgroundResource(nonselectedBackgroundResource);
|
||||
}
|
||||
}
|
||||
return v;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter getFilter(){
|
||||
if(filter == null){
|
||||
filter = new ClassNameFilter();
|
||||
}
|
||||
return filter;
|
||||
}
|
||||
|
||||
public static class ViewHolder{
|
||||
public TextView textView;
|
||||
public LinearLayout layoutRow;
|
||||
}
|
||||
|
||||
private class ClassNameFilter extends Filter{
|
||||
@Override
|
||||
protected FilterResults performFiltering(CharSequence constraint){
|
||||
FilterResults results = new FilterResults();
|
||||
String prefix = constraint.toString().toLowerCase();
|
||||
Log.i(TAG, "performFiltering: entries size: " + entries.size());
|
||||
if (prefix == null || prefix.length() == 0){
|
||||
ArrayList<String> list = new ArrayList<String>(entries);
|
||||
results.values = list;
|
||||
results.count = list.size();
|
||||
Log.i(TAG, "clearing filter with size: " + list.size());
|
||||
}else{
|
||||
final ArrayList<String> list = new ArrayList<String>(entries);
|
||||
final ArrayList<String> nlist = new ArrayList<String>();
|
||||
int count = list.size();
|
||||
|
||||
for (int i = 0; i<count; i++){
|
||||
if(list.get(i).toLowerCase().contains(prefix)){
|
||||
nlist.add(list.get(i));
|
||||
}
|
||||
results.values = nlist;
|
||||
results.count = nlist.size();
|
||||
}
|
||||
Log.i(TAG, "filtered list size: " + nlist.size() + ", entries size: " + entries.size());
|
||||
}
|
||||
Log.i(TAG, "Returning filter count: " + results.count);
|
||||
return results;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
protected void publishResults(CharSequence constraint, FilterResults results) {
|
||||
filteredEntries = (ArrayList<String>)results.values;
|
||||
notifyDataSetChanged();
|
||||
clear();
|
||||
int count = filteredEntries.size();
|
||||
for(int i = 0; i<count; i++){
|
||||
add(filteredEntries.get(i));
|
||||
notifyDataSetInvalidated();
|
||||
}
|
||||
Log.i(TAG, "publishing results with size: " + count);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,310 @@
|
||||
/*
|
||||
* To change this template, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package com.jmonkeyengine.tests;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Toast;
|
||||
import com.jme3.app.Application;
|
||||
import dalvik.system.DexFile;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
|
||||
//TODO: Add settings menu items for MouseEvents, JoystickEvents, and device orientation
|
||||
//TODO: Create onscreen virtual keypad for triggering normal mapped keys used by test apps or modify test apps for touch with onscreen keypad
|
||||
//TODO: Go through each test and see if any classes need to be added to the exclusions list
|
||||
|
||||
/**
|
||||
* Main Activity started by the application. Users select different jME3 test
|
||||
* applications that are started via TestsHarness Activity.
|
||||
* @author iwgeric
|
||||
*/
|
||||
public class MainActivity extends Activity implements OnItemClickListener, View.OnClickListener, TextWatcher {
|
||||
private static final String TAG = "MainActivity";
|
||||
|
||||
/**
|
||||
* Static String to pass the key for the selected test app to the
|
||||
* TestsHarness class to start the application. Also used to store the
|
||||
* current selection to the savedInstanceState Bundle.
|
||||
*/
|
||||
public static final String SELECTED_APP_CLASS = "Selected_App_Class";
|
||||
|
||||
/**
|
||||
* Static String to pass the key for the selected list position to the
|
||||
* savedInstanceState Bundle so the list position can be restored after
|
||||
* exiting the test application.
|
||||
*/
|
||||
public static final String SELECTED_LIST_POSITION = "Selected_List_Position";
|
||||
|
||||
/* Fields to contain the current position and display contents of the spinner */
|
||||
private int currentPosition = 0;
|
||||
private String currentSelection = "";
|
||||
private List<String> classNames = new ArrayList<String>();
|
||||
private List<String> exclusions = new ArrayList<String>();
|
||||
private String rootPackage;
|
||||
|
||||
/* ListView that displays the test application class names. */
|
||||
private ListView listClasses;
|
||||
|
||||
/* ArrayAdapter connects the spinner widget to array-based data. */
|
||||
private CustomArrayAdapter arrayAdapter;
|
||||
|
||||
/* Buttons to start application or stop the activity. */
|
||||
private Button btnOK;
|
||||
private Button btnCancel;
|
||||
|
||||
/* Filter Edit Box */
|
||||
EditText editFilterText;
|
||||
|
||||
|
||||
/**
|
||||
* Called when the activity is first created.
|
||||
*/
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
Log.i(TAG, "Restoring selections in onCreate: "
|
||||
+ "position: " + savedInstanceState.getInt(SELECTED_LIST_POSITION, 0)
|
||||
+ "class: " + savedInstanceState.getString(SELECTED_APP_CLASS)
|
||||
);
|
||||
currentPosition = savedInstanceState.getInt(SELECTED_LIST_POSITION, 0);
|
||||
currentSelection = savedInstanceState.getString(SELECTED_APP_CLASS);
|
||||
}
|
||||
|
||||
|
||||
/* Set content view and register views */
|
||||
setContentView(R.layout.test_chooser_layout);
|
||||
btnOK = (Button) findViewById(R.id.btnOK);
|
||||
btnCancel = (Button) findViewById(R.id.btnCancel);
|
||||
listClasses = (ListView) findViewById(R.id.listClasses);
|
||||
editFilterText = (EditText) findViewById(R.id.txtFilter);
|
||||
|
||||
|
||||
/* Define the root package to start with */
|
||||
rootPackage = "jme3test";
|
||||
|
||||
/* Create an array of Strings to define which classes to exclude */
|
||||
exclusions.add("$"); // inner classes
|
||||
exclusions.add("TestChooser"); // Desktop test chooser class
|
||||
exclusions.add("awt"); // Desktop test chooser class
|
||||
|
||||
// mExclusions.add("");
|
||||
|
||||
/*
|
||||
* Read the class names from the dex file and filter based on
|
||||
* name and super class.
|
||||
*/
|
||||
|
||||
Log.i(TAG, "Composing Test list...");
|
||||
|
||||
ApplicationInfo ai = this.getApplicationInfo();
|
||||
String classPath = ai.sourceDir;
|
||||
DexFile dex = null;
|
||||
Enumeration<String> apkClassNames = null;
|
||||
try {
|
||||
dex = new DexFile(classPath);
|
||||
apkClassNames = dex.entries();
|
||||
while (apkClassNames.hasMoreElements()) {
|
||||
String className = apkClassNames.nextElement();
|
||||
if (checkClassName(className) && checkClassType(className)) {
|
||||
classNames.add(className);
|
||||
}
|
||||
// classNames.add(className);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
dex.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a backing Adapter for the List View from a list of the
|
||||
* classes. The list is defined by array of class names.
|
||||
*/
|
||||
arrayAdapter = new CustomArrayAdapter(
|
||||
this,
|
||||
R.layout.test_chooser_row, // text view to display selection
|
||||
classNames // array of strings to display
|
||||
);
|
||||
|
||||
/* Set the resource id for selected and non selected backgrounds */
|
||||
Log.i(TAG, "Setting Adapter Background Resource IDs");
|
||||
arrayAdapter.setSelectedBackgroundResource(R.drawable.selected);
|
||||
arrayAdapter.setNonSelectedBackgroundResource(R.drawable.nonselected);
|
||||
|
||||
/* Attach the Adapter to the spinner */
|
||||
Log.i(TAG, "Setting ListView Adapter");
|
||||
listClasses.setAdapter(arrayAdapter);
|
||||
|
||||
/* Set initial selection for the list */
|
||||
setSelection(currentPosition);
|
||||
|
||||
/* Set Click and Text Changed listeners */
|
||||
listClasses.setOnItemClickListener(this);
|
||||
btnOK.setOnClickListener(this);
|
||||
btnCancel.setOnClickListener(this);
|
||||
editFilterText.addTextChangedListener(this);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* User selected an application. Sets the current selection and redraws
|
||||
* the list view to highlight the selected item.
|
||||
* @param parent AdapterView tied to the list
|
||||
* @param view The ListView
|
||||
* @param position Selection position in the list of class names
|
||||
* @param id
|
||||
*/
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
setSelection(position);
|
||||
}
|
||||
|
||||
/**
|
||||
* User clicked a view on the screen. Check for the OK and Cancel buttons
|
||||
* and either start the applicaiton or exit.
|
||||
* @param view
|
||||
*/
|
||||
public void onClick(View view) {
|
||||
if (view.equals(btnOK)) {
|
||||
/* Get selected class, pack it in the intent and start the test app */
|
||||
Log.i(TAG, "User selected OK for class: " + currentSelection);
|
||||
Intent intent = new Intent(this, TestsHarness.class);
|
||||
intent.putExtra(SELECTED_APP_CLASS, currentSelection);
|
||||
startActivity(intent);
|
||||
} else if (view.equals(btnCancel)) {
|
||||
/* Exit */
|
||||
Log.i(TAG, "User selected Cancel");
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check class name to see if the class is in the root package and if it
|
||||
* contains any of the exclusion strings
|
||||
* @param className Class name to check
|
||||
* @return true if the check passes, false otherwise
|
||||
*/
|
||||
private boolean checkClassName(String className) {
|
||||
boolean include = true;
|
||||
/* check to see if the class in inside the rootPackage package */
|
||||
if (className.startsWith(rootPackage)) {
|
||||
/* check to see if the class contains any of the exlusion strings */
|
||||
for (int i = 0; i < exclusions.size(); i++) {
|
||||
if (className.contains(exclusions.get(i))) {
|
||||
Log.i(TAG, "Skipping Class " + className + ". Includes exclusion string: " + exclusions.get(i) + ".");
|
||||
include = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
include = false;
|
||||
Log.i(TAG, "Skipping Class " + className + ". Not in the root package: " + rootPackage + ".");
|
||||
}
|
||||
return include;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if the class extends Application or SimpleApplication
|
||||
* @param className Class name to check
|
||||
* @return true if the check passes, false otherwise
|
||||
*/
|
||||
private boolean checkClassType(String className) {
|
||||
boolean include = true;
|
||||
try {
|
||||
Class<?> clazz = (Class<?>)Class.forName(className);
|
||||
if (Application.class.isAssignableFrom(clazz)) {
|
||||
Log.i(TAG, "Class " + className + " is a jME Application");
|
||||
} else {
|
||||
include = false;
|
||||
Log.i(TAG, "Skipping Class " + className + ". Not a jME Application");
|
||||
}
|
||||
|
||||
} catch (ClassNotFoundException cnfe) {
|
||||
include = false;
|
||||
Log.i(TAG, "Skipping Class " + className + ". Class not found.");
|
||||
}
|
||||
return include;
|
||||
}
|
||||
|
||||
private void setSelection(int position) {
|
||||
if (position == -1) {
|
||||
arrayAdapter.setSelectedPosition(0);
|
||||
currentPosition = -1;
|
||||
currentSelection = "";
|
||||
listClasses.invalidateViews();
|
||||
} else {
|
||||
arrayAdapter.setSelectedPosition(position);
|
||||
currentPosition = position;
|
||||
currentSelection = arrayAdapter.getItem(position);
|
||||
listClasses.invalidateViews();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle savedInstanceState) {
|
||||
super.onSaveInstanceState(savedInstanceState);
|
||||
Log.i(TAG, "Saving selections in onSaveInstanceState: "
|
||||
+ "position: " + currentPosition + ", "
|
||||
+ "class: " + currentSelection
|
||||
);
|
||||
// Save current selections to the savedInstanceState.
|
||||
// This bundle will be passed to onCreate if the process is
|
||||
// killed and restarted.
|
||||
savedInstanceState.putString(SELECTED_APP_CLASS, currentSelection);
|
||||
savedInstanceState.putInt(SELECTED_LIST_POSITION, currentPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRestoreInstanceState(Bundle savedInstanceState) {
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
// Log.i(TAG, "Restoring selections in onRestoreInstanceState: "
|
||||
// + "position: " + savedInstanceState.getInt(SELECTED_LIST_POSITION, 0)
|
||||
// + "class: " + savedInstanceState.getString(SELECTED_APP_CLASS)
|
||||
// );
|
||||
// //Restore selections from the savedInstanceState.
|
||||
// // This bundle has also been passed to onCreate.
|
||||
// currentPosition = savedInstanceState.getInt(SELECTED_LIST_POSITION, 0);
|
||||
// currentSelection = savedInstanceState.getString(SELECTED_APP_CLASS);
|
||||
}
|
||||
|
||||
public void beforeTextChanged(CharSequence cs, int i, int i1, int i2) {
|
||||
}
|
||||
|
||||
public void onTextChanged(CharSequence cs, int startPos, int beforePos, int count) {
|
||||
Log.i(TAG, "onTextChanged with cs: " + cs + ", startPos: " + startPos + ", beforePos: " + beforePos + ", count: " + count);
|
||||
// setSelection(-1);
|
||||
arrayAdapter.getFilter().filter(cs.toString());
|
||||
}
|
||||
|
||||
public void afterTextChanged(Editable edtbl) {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
editFilterText.removeTextChangedListener(this);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.jmonkeyengine.tests;
|
||||
|
||||
import android.content.Intent;
|
||||
import com.jme3.app.AndroidHarness;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.os.Bundle;
|
||||
import com.jme3.system.android.AndroidConfigChooser.ConfigType;
|
||||
|
||||
public class TestsHarness extends AndroidHarness{
|
||||
|
||||
/*
|
||||
* Note that you can ignore the errors displayed in this file,
|
||||
* the android project will build regardless.
|
||||
* Install the 'Android' plugin under Tools->Plugins->Available Plugins
|
||||
* to get error checks and code completion for the Android project files.
|
||||
*/
|
||||
|
||||
public TestsHarness(){
|
||||
// Set the application class to run
|
||||
appClass = "mygame.Main";
|
||||
// Try ConfigType.FASTEST; or ConfigType.LEGACY if you have problems
|
||||
eglConfigType = ConfigType.BEST;
|
||||
// Exit Dialog title & message
|
||||
exitDialogTitle = "Exit?";
|
||||
exitDialogMessage = "Press Yes";
|
||||
// Enable verbose logging
|
||||
eglConfigVerboseLogging = false;
|
||||
// Choose screen orientation
|
||||
screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
|
||||
// Invert the MouseEvents X (default = true)
|
||||
mouseEventsInvertX = true;
|
||||
// Invert the MouseEvents Y (default = true)
|
||||
mouseEventsInvertY = true;
|
||||
// Add splash screen drawable resource
|
||||
splashPicID = R.drawable.monkey256_9;
|
||||
// Simulate a joystick with Android device orientation data (default = false)
|
||||
joystickEventsEnabled = false;
|
||||
// Simulate mouse events with Android touch input (default = true)
|
||||
mouseEventsEnabled = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
Intent intent = getIntent();
|
||||
appClass = intent.getStringExtra(MainActivity.SELECTED_APP_CLASS);
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
}
|
15
sdk/JME3TestsTemplateAndroid/nbproject/assets-impl.xml
Normal file
15
sdk/JME3TestsTemplateAndroid/nbproject/assets-impl.xml
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--assets-impl.xml v1.0-->
|
||||
<project name="assets-impl" basedir="..">
|
||||
<target name="-init-assets">
|
||||
<jar jarfile="${build.dir}/${assets.jar.name}" excludes="${assets.excludes}" basedir="${assets.folder.name}" compress="${assets.compress}"/>
|
||||
<property location="${assets.folder.name}" name="assets.dir.resolved"/>
|
||||
<property location="${build.dir}/${assets.jar.name}" name="assets.jar.resolved"/>
|
||||
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
|
||||
<pathconvert property="run.classpath.without.build.classes.dir">
|
||||
<path path="${run.classpath}"/>
|
||||
<map from="${build.classes.dir.resolved}" to=""/>
|
||||
<map from="${assets.dir.resolved}" to="${assets.jar.resolved}"/>
|
||||
</pathconvert>
|
||||
</target>
|
||||
</project>
|
1383
sdk/JME3TestsTemplateAndroid/nbproject/build-impl.xml
Normal file
1383
sdk/JME3TestsTemplateAndroid/nbproject/build-impl.xml
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,4 @@
|
||||
$label=Android Device
|
||||
$target.clean=clean clean-android
|
||||
$target.debug=run-android
|
||||
$target.run=run-android
|
@ -0,0 +1,8 @@
|
||||
build.xml.data.CRC32=94bf7c61
|
||||
build.xml.script.CRC32=79a29eb7
|
||||
build.xml.stylesheet.CRC32=958a1d3e@1.32.1.45
|
||||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||
nbproject/build-impl.xml.data.CRC32=e2c7a974
|
||||
nbproject/build-impl.xml.script.CRC32=0bb68565
|
||||
nbproject/build-impl.xml.stylesheet.CRC32=6ddba6b6@1.53.1.46
|
132
sdk/JME3TestsTemplateAndroid/nbproject/mobile-impl.xml
Normal file
132
sdk/JME3TestsTemplateAndroid/nbproject/mobile-impl.xml
Normal file
@ -0,0 +1,132 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--mobile-impl.xml v0.18-->
|
||||
<project name="mobile-impl" basedir="..">
|
||||
<condition property="android-adb-name" value="${file.separator}platform-tools${file.separator}adb.exe" else="${file.separator}platform-tools${file.separator}adb">
|
||||
<os family="windows" />
|
||||
</condition>
|
||||
|
||||
<target name="run-android" depends="-flag-no-android, jar, -test-android-enabled, -copy-android-libs" if="is.android.enabled">
|
||||
<echo>Building debug android application version.</echo>
|
||||
<ant dir="mobile" target="debug" inheritall="false"/>
|
||||
<antcall target="-start-android-device"/>
|
||||
<ant dir="mobile" target="installd" inheritall="false"/>
|
||||
<antcall target="-run-android-device"/>
|
||||
</target>
|
||||
|
||||
<target name="clean-android">
|
||||
<ant dir="mobile" target="clean" inheritall="false"/>
|
||||
</target>
|
||||
|
||||
<target name="-mobile-deployment" depends="-test-android-enabled, -copy-android-libs" if="is.android.enabled" unless="no.android.build">
|
||||
<ant dir="mobile" target="release" inheritall="false"/>
|
||||
<copy todir="dist" verbose="false" flatten="true">
|
||||
<fileset dir="mobile/bin/">
|
||||
<include name="**/*.apk"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
<target name="-copy-android-libs" if="is.android.enabled">
|
||||
<echo>Copying application libraries to android project.</echo>
|
||||
<delete dir="mobile/libs" failonerror="false"/>
|
||||
<mkdir dir="mobile/libs"/>
|
||||
<copy todir="mobile/libs" verbose="false" flatten="true">
|
||||
<fileset dir="dist/lib/">
|
||||
<exclude name="${assets.jar.name}"/>
|
||||
<exclude name="jME3-desktop.jar"/>
|
||||
<exclude name="jME3-blender.jar"/>
|
||||
<exclude name="jME3-lwjgl.jar"/>
|
||||
<exclude name="jME3-lwjgl-natives.jar"/>
|
||||
<exclude name="jME3-bullet-natives.jar"/>
|
||||
<exclude name="jME3-jbullet.jar"/>
|
||||
<exclude name="jME3-bullet.jar"/>
|
||||
<exclude name="jbullet.jar"/>
|
||||
<exclude name="stack-alloc.jar"/>
|
||||
<exclude name="vecmath.jar"/>
|
||||
<exclude name="lwjgl.jar"/>
|
||||
<exclude name="jinput.jar"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
|
||||
<antcall target="-add-android-lib"/>
|
||||
<antcall target="-unzip-bullet-libs"/>
|
||||
<antcall target="-unzip-assets"/>
|
||||
<copy file="${dist.jar}" todir="mobile/libs/" verbose="false"/>
|
||||
</target>
|
||||
|
||||
<target name="-add-android-lib">
|
||||
<echo>Adding libraries for android.</echo>
|
||||
<copy todir="mobile/libs" flatten="true">
|
||||
<path>
|
||||
<pathelement path="${libs.android-base.classpath}"/>
|
||||
</path>
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
<target name="-unzip-bullet-libs" depends="-delete-bullet-libs" if="bulletIsIncluded">
|
||||
<echo>Replacing bullet library with android native version.</echo>
|
||||
<unzip src="mobile/libs/jME3-bullet-natives-android.jar" dest="mobile/libs"/>
|
||||
<delete file="mobile/libs/jME3-bullet-natives-android.jar"/>
|
||||
<delete dir="mobile/libs/x86"/>
|
||||
</target>
|
||||
|
||||
<target name="-delete-bullet-libs" depends="-test-bullet-included" unless="bulletIsIncluded">
|
||||
<delete file="mobile/libs/jME3-bullet.jar"/>
|
||||
<delete file="mobile/libs/jME3-bullet-natives-android.jar"/>
|
||||
</target>
|
||||
|
||||
<target name="-unzip-assets">
|
||||
<echo>Unzipping Assets to Android Directories</echo>
|
||||
<delete dir="mobile/assets" failonerror="false"/>
|
||||
<mkdir dir="mobile/assets"/>
|
||||
<unzip src="dist/lib/${assets.jar.name}" dest="mobile/assets"/>
|
||||
<delete file="mobile/libs/${assets.jar.name}" failonerror="true"/>
|
||||
</target>
|
||||
|
||||
<target name="-test-bullet-included">
|
||||
<condition property="bulletIsIncluded">
|
||||
<contains string="${javac.classpath}" substring="bullet.jar"/>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<target name="-start-android-device">
|
||||
<property file="mobile/local.properties"/>
|
||||
<exec executable="${sdk.dir}${android-adb-name}" failonerror="true">
|
||||
<arg value="start-server"/>
|
||||
</exec>
|
||||
<echo>Waiting for device to be ready.. Connect your device now if its not connected yet.</echo>
|
||||
<exec executable="${sdk.dir}${android-adb-name}" failonerror="true">
|
||||
<arg value="wait-for-device"/>
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="-run-android-device">
|
||||
<property file="mobile/local.properties"/>
|
||||
<exec executable="${sdk.dir}${android-adb-name}" failonerror="true">
|
||||
<arg value="logcat"/>
|
||||
<arg value="-c"/>
|
||||
</exec>
|
||||
<exec executable="${sdk.dir}${android-adb-name}" failonerror="true">
|
||||
<arg value="shell"/>
|
||||
<arg value="am start -n ${mobile.android.package}/.MainActivity"/>
|
||||
</exec>
|
||||
<echo>Logging android device output, cancel build or disconnect device to stop logging.</echo>
|
||||
<exec executable="${sdk.dir}${android-adb-name}" failonerror="true">
|
||||
<arg value="logcat"/>
|
||||
<arg value="AndroidRuntime:E"/>
|
||||
<arg value="System.out:I"/>
|
||||
<arg value="System.err:W"/>
|
||||
<arg value="NSLog:*"/>
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="-test-android-enabled">
|
||||
<condition property="is.android.enabled">
|
||||
<istrue value="${mobile.android.enabled}"/>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<target name="-flag-no-android">
|
||||
<property name="no.android.build" value="true"/>
|
||||
</target>
|
||||
</project>
|
99
sdk/JME3TestsTemplateAndroid/nbproject/project.properties
Normal file
99
sdk/JME3TestsTemplateAndroid/nbproject/project.properties
Normal file
@ -0,0 +1,99 @@
|
||||
annotation.processing.enabled=true
|
||||
annotation.processing.enabled.in.editor=false
|
||||
annotation.processing.processors.list=
|
||||
annotation.processing.run.all.processors=true
|
||||
ant.customtasks.libs=android-base
|
||||
application.homepage=http://jmonkeyenging.org
|
||||
application.title=jMonkeyEngine Test Applications
|
||||
application.vendor=jMonkeyEngine
|
||||
assets.jar.name=assets.jar
|
||||
assets.excludes=**/*.j3odata,**/*.mesh.xml,**/*.skeleton.xml,**/*.scene,**/*.material,**/*.obj,**/*.mtl,**/*.blend
|
||||
assets.folder.name=assets
|
||||
assets.compress=true
|
||||
build.classes.dir=${build.dir}/classes
|
||||
build.classes.excludes=**/*.java,**/*.form
|
||||
# This directory is removed when the project is cleaned:
|
||||
build.dir=build
|
||||
build.generated.dir=${build.dir}/generated
|
||||
build.generated.sources.dir=${build.dir}/generated-sources
|
||||
# Only compile against the classpath explicitly listed here:
|
||||
build.sysclasspath=ignore
|
||||
build.test.classes.dir=${build.dir}/test/classes
|
||||
build.test.results.dir=${build.dir}/test/results
|
||||
compile.on.save=false
|
||||
# Uncomment to specify the preferred debugger connection transport:
|
||||
#debug.transport=dt_socket
|
||||
debug.classpath=\
|
||||
${run.classpath}
|
||||
debug.test.classpath=\
|
||||
${run.test.classpath}
|
||||
# This directory is removed when the project is cleaned:
|
||||
dist.dir=dist
|
||||
dist.jar=${dist.dir}/${application.title}.jar
|
||||
dist.javadoc.dir=${dist.dir}/javadoc
|
||||
endorsed.classpath=
|
||||
excludes=
|
||||
includes=**
|
||||
jar.archive.disabled=${jnlp.enabled}
|
||||
jar.compress=false
|
||||
jar.index=${jnlp.enabled}
|
||||
javac.classpath=\
|
||||
${libs.jme3.classpath}:\
|
||||
${libs.jme3-libraries.classpath}:\
|
||||
${libs.jme3-libraries-blender.classpath}:\
|
||||
${libs.jme3-test-data.classpath}
|
||||
# Space-separated list of extra javac options
|
||||
javac.compilerargs=
|
||||
javac.deprecation=false
|
||||
javac.processorpath=\
|
||||
${javac.classpath}
|
||||
javac.source=1.5
|
||||
javac.target=1.5
|
||||
javac.test.classpath=\
|
||||
${javac.classpath}:\
|
||||
${build.classes.dir}
|
||||
javadoc.additionalparam=
|
||||
javadoc.author=false
|
||||
javadoc.encoding=${source.encoding}
|
||||
javadoc.noindex=false
|
||||
javadoc.nonavbar=false
|
||||
javadoc.notree=false
|
||||
javadoc.private=false
|
||||
javadoc.splitindex=true
|
||||
javadoc.use=true
|
||||
javadoc.version=false
|
||||
javadoc.windowtitle=
|
||||
jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
|
||||
jnlp.applet.class=jme3test.awt.AppHarness
|
||||
jnlp.applet.height=300
|
||||
jnlp.applet.width=300
|
||||
jnlp.codebase.type=local
|
||||
jnlp.descriptor=application
|
||||
jnlp.enabled=false
|
||||
jnlp.mixed.code=default
|
||||
jnlp.offline-allowed=false
|
||||
jnlp.signed=false
|
||||
jnlp.signing=
|
||||
jnlp.signing.alias=
|
||||
jnlp.signing.keystore=
|
||||
main.class=jme3test.TestChooser
|
||||
meta.inf.dir=${src.dir}/META-INF
|
||||
manifest.file=MANIFEST.MF
|
||||
mkdist.disabled=false
|
||||
mobile.android.enabled=true
|
||||
mobile.android.package=com.jmonkeyengine.tests
|
||||
mobile.android.target=android-8
|
||||
platform.active=default_platform
|
||||
run.classpath=\
|
||||
${javac.classpath}:\
|
||||
${build.classes.dir}:\
|
||||
${assets.folder.name}
|
||||
# Space-separated list of JVM arguments used when running the project
|
||||
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
|
||||
# or test-sys-prop.name=value to set system properties for unit tests):
|
||||
run.jvmargs=
|
||||
run.test.classpath=\
|
||||
${javac.test.classpath}:\
|
||||
${build.test.classes.dir}
|
||||
source.encoding=UTF-8
|
||||
src.dir=src
|
21
sdk/JME3TestsTemplateAndroid/nbproject/project.xml
Normal file
21
sdk/JME3TestsTemplateAndroid/nbproject/project.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||
<type>org.netbeans.modules.java.j2seproject</type>
|
||||
<configuration>
|
||||
<buildExtensions xmlns="http://www.netbeans.org/ns/ant-build-extender/1">
|
||||
<extension file="assets-impl.xml" id="assets">
|
||||
<dependency dependsOn="-init-assets" target="-do-init"/>
|
||||
</extension>
|
||||
<extension file="mobile-impl.xml" id="mobile">
|
||||
<dependency dependsOn="-mobile-deployment" target="jar"/>
|
||||
</extension>
|
||||
</buildExtensions>
|
||||
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
|
||||
<name>jME3TestsTemplateAndroid</name>
|
||||
<source-roots>
|
||||
<root id="src.dir"/>
|
||||
</source-roots>
|
||||
<test-roots/>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
Loading…
x
Reference in New Issue
Block a user