Move android and rpi examples to others
This commit is contained in:
parent
5f11d4eab4
commit
438d1cfad7
16 changed files with 2 additions and 2 deletions
36
examples/others/android/example/README.md
Normal file
36
examples/others/android/example/README.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
### Android example
|
||||
|
||||
To compile example to shared library you will need [Android NDK](https://developer.android.com/ndk/downloads/index.html).
|
||||
To build Android apk you will need [Android SDK](http://developer.android.com/sdk/index.html#Other).
|
||||
|
||||
Export path to Android NDK, point to location where you have unpacked archive:
|
||||
|
||||
export ANDROID_NDK_HOME=/opt/android-ndk
|
||||
|
||||
Add toolchain bin directory to PATH:
|
||||
|
||||
export PATH=${ANDROID_NDK_HOME}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:${PATH}
|
||||
|
||||
Export sysroot path:
|
||||
|
||||
export ANDROID_SYSROOT=${ANDROID_NDK_HOME}/platforms/android-16/arch-arm
|
||||
|
||||
And compile shared library:
|
||||
|
||||
CC=arm-linux-androideabi-gcc \
|
||||
CGO_CFLAGS="-I${ANDROID_SYSROOT}/usr/include --sysroot=${ANDROID_SYSROOT}" \
|
||||
CGO_LDFLAGS="-L${ANDROID_SYSROOT}/usr/lib --sysroot=${ANDROID_SYSROOT}" \
|
||||
CGO_ENABLED=1 GOOS=android GOARCH=arm \
|
||||
go build -buildmode=c-shared -ldflags="-s -w -extldflags=-Wl,-soname,libexample.so" \
|
||||
-o=android/libs/armeabi-v7a/libexample.so
|
||||
|
||||
To build apk export path to Android SDK, point to location where you unpacked archive:
|
||||
|
||||
export ANDROID_HOME=/opt/android-sdk
|
||||
|
||||
And build apk with ant:
|
||||
|
||||
cd android
|
||||
ant clean debug
|
||||
|
||||
If everything is successfully built apk can be found in bin/ directory.
|
32
examples/others/android/example/android/AndroidManifest.xml
Normal file
32
examples/others/android/example/android/AndroidManifest.xml
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.github.gen2brain.raylib.go"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0">
|
||||
|
||||
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="25" />
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
|
||||
|
||||
<!-- We do not have Java code. Therefore android:hasCode is set to false. -->
|
||||
<application android:allowBackup="false" android:hasCode="false"
|
||||
android:label="@string/app_name"
|
||||
android:icon="@drawable/icon"
|
||||
android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
|
||||
|
||||
<!-- Our activity is the built-in NativeActivity framework class. -->
|
||||
<activity android:name="android.app.NativeActivity"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize"
|
||||
android:screenOrientation="landscape"
|
||||
android:clearTaskOnLaunch="true">
|
||||
|
||||
<!-- Tell NativeActivity the name of our .so -->
|
||||
<meta-data android:name="android.app.lib_name" android:value="example" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
BIN
examples/others/android/example/android/assets/alagard.rbmf
Normal file
BIN
examples/others/android/example/android/assets/alagard.rbmf
Normal file
Binary file not shown.
BIN
examples/others/android/example/android/assets/ambient.ogg
Normal file
BIN
examples/others/android/example/android/assets/ambient.ogg
Normal file
Binary file not shown.
BIN
examples/others/android/example/android/assets/coin.wav
Normal file
BIN
examples/others/android/example/android/assets/coin.wav
Normal file
Binary file not shown.
BIN
examples/others/android/example/android/assets/raylib_logo.png
Normal file
BIN
examples/others/android/example/android/assets/raylib_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.7 KiB |
92
examples/others/android/example/android/build.xml
Normal file
92
examples/others/android/example/android/build.xml
Normal file
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="example" 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>
|
|
@ -0,0 +1,2 @@
|
|||
# Project target.
|
||||
target=android-27
|
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 1 KiB |
Binary file not shown.
After Width: | Height: | Size: 922 B |
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">raylib-go</string>
|
||||
</resources>
|
123
examples/others/android/example/main.go
Normal file
123
examples/others/android/example/main.go
Normal file
|
@ -0,0 +1,123 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"runtime"
|
||||
|
||||
"github.com/gen2brain/raylib-go/raylib"
|
||||
)
|
||||
|
||||
// Game states
|
||||
const (
|
||||
Logo = iota
|
||||
Title
|
||||
GamePlay
|
||||
Ending
|
||||
)
|
||||
|
||||
func init() {
|
||||
raylib.SetCallbackFunc(main)
|
||||
}
|
||||
|
||||
func main() {
|
||||
screenWidth := int32(800)
|
||||
screenHeight := int32(450)
|
||||
|
||||
raylib.SetConfigFlags(raylib.FlagVsyncHint)
|
||||
|
||||
raylib.InitWindow(screenWidth, screenHeight, "Android example")
|
||||
|
||||
raylib.InitAudioDevice()
|
||||
|
||||
currentScreen := Logo
|
||||
windowShouldClose := false
|
||||
|
||||
texture := raylib.LoadTexture("raylib_logo.png") // Load texture (placed on assets folder)
|
||||
fx := raylib.LoadSound("coin.wav") // Load WAV audio file (placed on assets folder)
|
||||
ambient := raylib.LoadMusicStream("ambient.ogg") // Load music
|
||||
|
||||
raylib.PlayMusicStream(ambient)
|
||||
|
||||
framesCounter := 0 // Used to count frames
|
||||
|
||||
//raylib.SetTargetFPS(60)
|
||||
|
||||
for !windowShouldClose {
|
||||
raylib.UpdateMusicStream(ambient)
|
||||
|
||||
if runtime.GOOS == "android" && raylib.IsKeyDown(raylib.KeyBack) || raylib.WindowShouldClose() {
|
||||
windowShouldClose = true
|
||||
}
|
||||
|
||||
switch currentScreen {
|
||||
case Logo:
|
||||
framesCounter++ // Count frames
|
||||
|
||||
// Wait for 4 seconds (240 frames) before jumping to Title screen
|
||||
if framesCounter > 240 {
|
||||
currentScreen = Title
|
||||
}
|
||||
break
|
||||
case Title:
|
||||
// Press enter to change to GamePlay screen
|
||||
if raylib.IsGestureDetected(raylib.GestureTap) {
|
||||
raylib.PlaySound(fx)
|
||||
currentScreen = GamePlay
|
||||
}
|
||||
break
|
||||
case GamePlay:
|
||||
// Press enter to change to Ending screen
|
||||
if raylib.IsGestureDetected(raylib.GestureTap) {
|
||||
raylib.PlaySound(fx)
|
||||
currentScreen = Ending
|
||||
}
|
||||
break
|
||||
case Ending:
|
||||
// Press enter to return to Title screen
|
||||
if raylib.IsGestureDetected(raylib.GestureTap) {
|
||||
raylib.PlaySound(fx)
|
||||
currentScreen = Title
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
raylib.BeginDrawing()
|
||||
|
||||
raylib.ClearBackground(raylib.RayWhite)
|
||||
|
||||
switch currentScreen {
|
||||
case Logo:
|
||||
raylib.DrawText("LOGO SCREEN", 20, 20, 40, raylib.LightGray)
|
||||
raylib.DrawTexture(texture, screenWidth/2-texture.Width/2, screenHeight/2-texture.Height/2, raylib.White)
|
||||
raylib.DrawText("WAIT for 4 SECONDS...", 290, 400, 20, raylib.Gray)
|
||||
break
|
||||
case Title:
|
||||
raylib.DrawRectangle(0, 0, screenWidth, screenHeight, raylib.Green)
|
||||
raylib.DrawText("TITLE SCREEN", 20, 20, 40, raylib.DarkGreen)
|
||||
raylib.DrawText("TAP SCREEN to JUMP to GAMEPLAY SCREEN", 160, 220, 20, raylib.DarkGreen)
|
||||
break
|
||||
case GamePlay:
|
||||
raylib.DrawRectangle(0, 0, screenWidth, screenHeight, raylib.Purple)
|
||||
raylib.DrawText("GAMEPLAY SCREEN", 20, 20, 40, raylib.Maroon)
|
||||
raylib.DrawText("TAP SCREEN to JUMP to ENDING SCREEN", 170, 220, 20, raylib.Maroon)
|
||||
break
|
||||
case Ending:
|
||||
raylib.DrawRectangle(0, 0, screenWidth, screenHeight, raylib.Blue)
|
||||
raylib.DrawText("ENDING SCREEN", 20, 20, 40, raylib.DarkBlue)
|
||||
raylib.DrawText("TAP SCREEN to RETURN to TITLE SCREEN", 160, 220, 20, raylib.DarkBlue)
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
raylib.EndDrawing()
|
||||
}
|
||||
|
||||
raylib.UnloadSound(fx) // Unload sound data
|
||||
raylib.UnloadMusicStream(ambient) // Unload music stream data
|
||||
raylib.CloseAudioDevice() // Close audio device (music streaming is automatically stopped)
|
||||
raylib.UnloadTexture(texture) // Unload texture data
|
||||
raylib.CloseWindow() // Close window
|
||||
|
||||
os.Exit(0)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue