Added Android camera support to example app

This commit is contained in:
Mathias Westerdahl 2018-05-16 21:40:50 +02:00
parent c1dc501e23
commit 0943823a81
4 changed files with 147 additions and 2 deletions

141
AndroidManifest.xml Normal file
View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="{{android.package}}"
android:versionCode="{{android.version_code}}"
android:versionName="{{project.version}}"
android:installLocation="auto">
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:required="true" android:glEsVersion="0x00020000" />
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="23" />
<application
{{#has-icons?}}
android:icon="@drawable/icon"
{{/has-icons?}}
android:label="{{project.title}}" android:hasCode="true" android:debuggable="false">
<!-- For Local Notifications -->
<receiver android:name="com.defold.push.LocalNotificationReceiver" >
</receiver>
<!-- For GCM (push) -->
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<!-- For Facebook -->
<meta-data android:name="com.facebook.sdk.ApplicationName"
android:value="{{project.title}}" />
<activity android:name="com.dynamo.android.DefoldActivity"
android:label="{{project.title}}"
android:configChanges="orientation|screenSize|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:screenOrientation="{{orientation-support}}"
android:launchMode="singleTask">
<meta-data android:name="android.app.lib_name"
android:value="{{exe-name}}" />
{{#android.push_field_title}}
<meta-data
android:name="com.defold.push.field_title"
android:value="{{android.push_field_title}}" />
{{/android.push_field_title}}
{{#android.push_field_text}}
<meta-data
android:name="com.defold.push.field_text"
android:value="{{android.push_field_text}}" />
{{/android.push_field_text}}
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.dynamo.android.DispatcherActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android:name="com.facebook.FacebookActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="{{project.title}}" />
<activity android:name="com.defold.iap.IapGooglePlayActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="IAP">
</activity>
<!-- For Local Notifications -->
<activity android:name="com.defold.push.LocalPushDispatchActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:launchMode="singleTask"
android:configChanges="keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="com.defold.push.FORWARD" />
<category android:name="com.defold.push" />
</intent-filter>
</activity>
<!-- For GCM (push) -->
<activity android:name="com.defold.push.PushDispatchActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="com.defold.push.FORWARD" />
<category android:name="com.defold.push" />
</intent-filter>
</activity>
<receiver
android:name="com.defold.push.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.defold.push.FORWARD" />
<category android:name="com.defold.push" />
</intent-filter>
</receiver>
<!-- For IAC Invocations -->
<activity android:name="com.defold.iac.IACActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:launchMode="singleTask"
android:configChanges="keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="{{android.package}}" />
</intent-filter>
</activity>
<service android:name="com.defold.adtruth.InstallReceiver"/>
<receiver
android:name="com.defold.adtruth.InstallReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<!-- For Amazon IAP -->
<receiver android:name="com.amazon.device.iap.ResponseReceiver" >
<intent-filter>
<action android:name="com.amazon.inapp.purchasing.NOTIFY" android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<!-- For GCM (push) -->
<!-- NOTE: Package name from actual app here! -->
<permission android:name="{{android.package}}.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- NOTE: Package name from actual app here! -->
<uses-permission android:name="{{android.package}}.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
</manifest>
<!-- END_INCLUDE(manifest) -->

View File

@ -6,6 +6,9 @@ It relies on [buffers](https://www.defold.com/ref/buffer/).
For the supported set of QRCodes to decode, see the documentation for [Quirc decoded](https://github.com/dlbeer/quirc)
The encoder supports the traditional QR code type.
The QRCode extension itself should be supported on all platforms. However, the example app relies on getting images from the camera
and that extension is currently only supports OSX, iOS and Android (and the Android support is very work-in-progress)
# Example app
Push the Scan button to start scanning for qrcodes. The camera starts running and the the app scans the

View File

@ -1,7 +1,7 @@
[project]
title = QRCode
version = 0.1
dependencies = https://github.com/defold/extension-camera/archive/master.zip,https://github.com/andsve/dirtylarry/archive/master.zip
dependencies = https://github.com/defold/extension-camera/archive/dev-android.zip,https://github.com/andsve/dirtylarry/archive/master.zip
custom_resources = main/images/defold.png
[bootstrap]
@ -38,6 +38,7 @@ app_icon_180x180 = /icons/Icon-180.png
[android]
package = com.defold.qrcode
manifest = /AndroidManifest.xml
[osx]
bundle_identifier = com.defold.qrcode

View File

@ -7,7 +7,7 @@ local function start_scan(self)
local quality = camera.CAPTURE_QUALITY_HIGH
local type = camera.CAMERA_TYPE_FRONT
self.flip = 0
if sysinfo.system_name == 'iPhone OS' then
if sysinfo.system_name == 'iPhone OS' or sysinfo.system_name == 'Android' then
type = camera.CAMERA_TYPE_BACK
quality = camera.CAPTURE_QUALITY_MEDIUM
self.flip = 1