mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-26 20:33:07 +08:00
Merge branch 'master' of github.com:phonegap/phonegap-android
This commit is contained in:
commit
81ec4bc4fb
@ -4,5 +4,5 @@
|
|||||||
<classpathentry kind="src" path="src"/>
|
<classpathentry kind="src" path="src"/>
|
||||||
<classpathentry kind="src" path="gen"/>
|
<classpathentry kind="src" path="gen"/>
|
||||||
<classpathentry kind="lib" path="libs/commons-codec-1.3.jar"/>
|
<classpathentry kind="lib" path="libs/commons-codec-1.3.jar"/>
|
||||||
<classpathentry kind="output" path="bin"/>
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan"
|
||||||
package="com.phonegap" android:versionName="1.1" android:versionCode="5">
|
package="com.phonegap" android:versionName="1.1" android:versionCode="5">
|
||||||
<supports-screens
|
<supports-screens
|
||||||
android:largeScreens="true"
|
android:largeScreens="true"
|
||||||
android:normalScreens="true"
|
android:normalScreens="true"
|
||||||
android:smallScreens="true"
|
android:smallScreens="true"
|
||||||
android:resizeable="true"
|
android:resizeable="true"
|
||||||
android:anyDensity="true"
|
android:anyDensity="true"
|
||||||
/>
|
/>
|
||||||
<!-- android:xlargeScreens="true" screen supported only after Android-9 -->
|
<!-- android:xlargeScreens="true" screen supported only after Android-9 -->
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.CAMERA" />
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
@ -31,7 +31,7 @@
|
|||||||
<uses-feature android:name="android.hardware.camera.autofocus" />
|
<uses-feature android:name="android.hardware.camera.autofocus" />
|
||||||
|
|
||||||
<application android:icon="@drawable/icon" android:label="@string/app_name"
|
<application android:icon="@drawable/icon" android:label="@string/app_name"
|
||||||
android:debuggable="true">
|
android:debuggable="true">
|
||||||
<activity android:name=".StandAlone" android:windowSoftInputMode="adjustPan"
|
<activity android:name=".StandAlone" android:windowSoftInputMode="adjustPan"
|
||||||
android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
|
android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
@ -46,5 +46,5 @@
|
|||||||
</activity>
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="2" />
|
<uses-sdk android:minSdkVersion="2" />
|
||||||
</manifest>
|
</manifest>
|
17
framework/ant.properties
Normal file
17
framework/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 in 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.
|
||||||
|
|
@ -84,6 +84,7 @@ var MediaError = function() {
|
|||||||
this.message = "";
|
this.message = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MediaError.MEDIA_ERR_NONE_ACTIVE = 0;
|
||||||
MediaError.MEDIA_ERR_ABORTED = 1;
|
MediaError.MEDIA_ERR_ABORTED = 1;
|
||||||
MediaError.MEDIA_ERR_NETWORK = 2;
|
MediaError.MEDIA_ERR_NETWORK = 2;
|
||||||
MediaError.MEDIA_ERR_DECODE = 3;
|
MediaError.MEDIA_ERR_DECODE = 3;
|
||||||
@ -211,7 +212,7 @@ PhoneGap.Media.onStatus = function(id, msg, value) {
|
|||||||
}
|
}
|
||||||
else if (msg === Media.MEDIA_ERROR) {
|
else if (msg === Media.MEDIA_ERROR) {
|
||||||
if (media.errorCallback) {
|
if (media.errorCallback) {
|
||||||
media.errorCallback(value);
|
media.errorCallback({"code":value});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (msg == Media.MEDIA_POSITION) {
|
else if (msg == Media.MEDIA_POSITION) {
|
||||||
|
112
framework/build.xml
Executable file → Normal file
112
framework/build.xml
Executable file → Normal file
@ -9,70 +9,89 @@
|
|||||||
</loadfile>
|
</loadfile>
|
||||||
|
|
||||||
<!-- The local.properties file is created and updated by the 'android' tool.
|
<!-- The local.properties file is created and updated by the 'android' tool.
|
||||||
It contains the path to the SDK. It should *NOT* be checked in in Version
|
It contains the path to the SDK. It should *NOT* be checked into
|
||||||
Control Systems. -->
|
Version Control Systems. -->
|
||||||
<property file="local.properties" />
|
<loadproperties srcFile="local.properties" />
|
||||||
|
|
||||||
<!-- The build.properties file can be created by you and is never touched
|
<!-- The ant.properties file can be created by you. It is only edited by the
|
||||||
by the 'android' tool. This is the place to change some of the default property values
|
'android' tool to add properties to it.
|
||||||
used by the Ant rules.
|
This is the place to change some Ant specific build properties.
|
||||||
Here are some properties you may want to change/update:
|
Here are some properties you may want to change/update:
|
||||||
|
|
||||||
application.package
|
|
||||||
the name of your application package as defined in the manifest. Used by the
|
|
||||||
'uninstall' rule.
|
|
||||||
source.dir
|
source.dir
|
||||||
the name of the source directory. Default is 'src'.
|
The name of the source directory. Default is 'src'.
|
||||||
out.dir
|
out.dir
|
||||||
the name of the output directory. Default is 'bin'.
|
The name of the output directory. Default is 'bin'.
|
||||||
|
|
||||||
Properties related to the SDK location or the project target should be updated
|
For other overridable properties, look at the beginning of the rules
|
||||||
using the 'android' tool with the 'update' action.
|
files in the SDK, at tools/ant/build.xml
|
||||||
|
|
||||||
This file is an integral part of the build system for your application and
|
Properties related to the SDK location or the project target should
|
||||||
should be checked in in Version Control Systems.
|
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="build.properties" />
|
<property file="ant.properties" />
|
||||||
|
|
||||||
<!-- The default.properties file is created and updated by the 'android' tool, as well
|
|
||||||
as ADT.
|
|
||||||
This file is an integral part of the build system for your application and
|
|
||||||
should be checked in in Version Control Systems. -->
|
|
||||||
<property file="default.properties" />
|
|
||||||
|
|
||||||
<!-- We need to setup the double quote. -->
|
<!-- We need to setup the double quote. -->
|
||||||
<property name="dblQuote">"</property>
|
<property name="dblQuote">"</property>
|
||||||
|
|
||||||
<!-- Custom Android task to deal with the project target, and import the proper rules.
|
<!-- The project.properties file is created and updated by the 'android'
|
||||||
This requires ant 1.6.0 or above. -->
|
tool, as well as ADT.
|
||||||
<path id="android.antlibs">
|
|
||||||
<pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
|
|
||||||
<pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
|
|
||||||
<pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
|
|
||||||
<pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" />
|
|
||||||
<pathelement path="${sdk.dir}/tools/lib/jarutils.jar" />
|
|
||||||
</path>
|
|
||||||
|
|
||||||
<taskdef name="setup"
|
This contains project specific properties such as project target, and library
|
||||||
classname="com.android.ant.SetupTask"
|
dependencies. Lower level build properties are stored in ant.properties
|
||||||
classpathref="android.antlibs" />
|
(or in .classpath for Eclipse projects).
|
||||||
|
|
||||||
<!-- Execute the Android Setup task that will setup some properties specific to the target,
|
This file is an integral part of the build system for your
|
||||||
and import the build rules files.
|
application and should be checked into Version Control Systems. -->
|
||||||
|
<loadproperties srcFile="project.properties" />
|
||||||
|
|
||||||
The rules file is imported from
|
<!-- quick check on sdk.dir -->
|
||||||
<SDK>/platforms/<target_platform>/templates/android_rules.xml
|
<fail
|
||||||
|
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'"
|
||||||
|
unless="sdk.dir"
|
||||||
|
/>
|
||||||
|
|
||||||
To customize some build steps for your project:
|
|
||||||
- copy the content of the main node <project> from android_rules.xml
|
|
||||||
- paste it in this build.xml below the <setup /> task.
|
|
||||||
- disable the import by changing the setup task below to <setup import="false" />
|
|
||||||
|
|
||||||
This will ensure that the properties are setup correctly but that your customized
|
<!-- extension targets. Uncomment the ones where you want to do custom work
|
||||||
build steps are used.
|
in between standard targets -->
|
||||||
|
<!--
|
||||||
|
<target name="-pre-build">
|
||||||
|
</target>
|
||||||
|
<target name="-pre-compile">
|
||||||
|
</target>
|
||||||
|
|
||||||
|
/* 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} */
|
||||||
|
<target name="-post-compile">
|
||||||
|
</target>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- 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"
|
||||||
-->
|
-->
|
||||||
<setup />
|
<!-- version-tag: 1 -->
|
||||||
|
<import file="${sdk.dir}/tools/ant/build.xml" />
|
||||||
|
|
||||||
|
|
||||||
<target name="check-javascript" depends="build-javascript">
|
<target name="check-javascript" depends="build-javascript">
|
||||||
<delete dir="assets/lib"/>
|
<delete dir="assets/lib"/>
|
||||||
@ -133,7 +152,7 @@
|
|||||||
<!-- Build PhoneGap jar file that includes all native code, and PhoneGap JS file
|
<!-- Build PhoneGap jar file that includes all native code, and PhoneGap JS file
|
||||||
that includes all JavaScript code.
|
that includes all JavaScript code.
|
||||||
-->
|
-->
|
||||||
<target name="jar" depends="build-javascript, compile">
|
<target name="jar" depends="build-javascript, -compile">
|
||||||
<jar jarfile="phonegap-${version}.jar" basedir="bin/classes" excludes="com/phonegap/R.class,com/phonegap/R$*.class"/>
|
<jar jarfile="phonegap-${version}.jar" basedir="bin/classes" excludes="com/phonegap/R.class,com/phonegap/R$*.class"/>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
@ -143,5 +162,4 @@
|
|||||||
<target name="phonegap_release" depends="build-javascript, release">
|
<target name="phonegap_release" depends="build-javascript, release">
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -10,5 +10,5 @@
|
|||||||
# Indicates whether an apk should be generated for each density.
|
# Indicates whether an apk should be generated for each density.
|
||||||
split.density=false
|
split.density=false
|
||||||
# Project target.
|
# Project target.
|
||||||
target=android-12
|
target=android-14
|
||||||
apk-configurations=
|
apk-configurations=
|
||||||
|
14
framework/project.properties
Normal file
14
framework/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 use,
|
||||||
|
# "ant.properties", and override values to adapt the script to your
|
||||||
|
# project structure.
|
||||||
|
|
||||||
|
# Indicates whether an apk should be generated for each density.
|
||||||
|
split.density=false
|
||||||
|
# Project target.
|
||||||
|
target=android-14
|
||||||
|
apk-configurations=
|
@ -45,16 +45,13 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
private static int MEDIA_POSITION = 3;
|
private static int MEDIA_POSITION = 3;
|
||||||
private static int MEDIA_ERROR = 9;
|
private static int MEDIA_ERROR = 9;
|
||||||
|
|
||||||
// AudioPlayer error codes
|
// Media error codes
|
||||||
private static int MEDIA_ERROR_PLAY_MODE_SET = 1;
|
private static int MEDIA_ERR_NONE_ACTIVE = 0;
|
||||||
private static int MEDIA_ERROR_ALREADY_RECORDING = 2;
|
private static int MEDIA_ERR_ABORTED = 1;
|
||||||
private static int MEDIA_ERROR_STARTING_RECORDING = 3;
|
private static int MEDIA_ERR_NETWORK = 2;
|
||||||
private static int MEDIA_ERROR_RECORD_MODE_SET = 4;
|
private static int MEDIA_ERR_DECODE = 3;
|
||||||
private static int MEDIA_ERROR_STARTING_PLAYBACK = 5;
|
private static int MEDIA_ERR_NONE_SUPPORTED = 4;
|
||||||
private static int MEDIA_ERROR_RESUME_STATE = 6;
|
|
||||||
private static int MEDIA_ERROR_PAUSE_STATE = 7;
|
|
||||||
private static int MEDIA_ERROR_STOP_STATE = 8;
|
|
||||||
|
|
||||||
private AudioHandler handler; // The AudioHandler object
|
private AudioHandler handler; // The AudioHandler object
|
||||||
private String id; // The id of this player (used to identify Media object in JavaScript)
|
private String id; // The id of this player (used to identify Media object in JavaScript)
|
||||||
private int state = MEDIA_NONE; // State of recording or playback
|
private int state = MEDIA_NONE; // State of recording or playback
|
||||||
@ -108,7 +105,7 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
public void startRecording(String file) {
|
public void startRecording(String file) {
|
||||||
if (this.mPlayer != null) {
|
if (this.mPlayer != null) {
|
||||||
Log.d(LOG_TAG, "AudioPlayer Error: Can't record in play mode.");
|
Log.d(LOG_TAG, "AudioPlayer Error: Can't record in play mode.");
|
||||||
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERROR_PLAY_MODE_SET+");");
|
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERR_ABORTED+");");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure we're not already recording
|
// Make sure we're not already recording
|
||||||
@ -129,11 +126,11 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERROR_STARTING_RECORDING+");");
|
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERR_ABORTED+");");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Log.d(LOG_TAG, "AudioPlayer Error: Already recording.");
|
Log.d(LOG_TAG, "AudioPlayer Error: Already recording.");
|
||||||
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERROR_ALREADY_RECORDING+");");
|
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERR_ABORTED+");");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +172,7 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
public void startPlaying(String file) {
|
public void startPlaying(String file) {
|
||||||
if (this.recorder != null) {
|
if (this.recorder != null) {
|
||||||
Log.d(LOG_TAG, "AudioPlayer Error: Can't play in record mode.");
|
Log.d(LOG_TAG, "AudioPlayer Error: Can't play in record mode.");
|
||||||
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERROR_RECORD_MODE_SET+");");
|
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERR_ABORTED+");");
|
||||||
}
|
}
|
||||||
|
|
||||||
// If this is a new request to play audio, or stopped
|
// If this is a new request to play audio, or stopped
|
||||||
@ -220,7 +217,7 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERROR_STARTING_PLAYBACK+");");
|
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERR_ABORTED+");");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,7 +231,7 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Log.d(LOG_TAG, "AudioPlayer Error: startPlaying() called during invalid state: "+this.state);
|
Log.d(LOG_TAG, "AudioPlayer Error: startPlaying() called during invalid state: "+this.state);
|
||||||
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERROR_RESUME_STATE+");");
|
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERR_ABORTED+");");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -262,7 +259,7 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Log.d(LOG_TAG, "AudioPlayer Error: pausePlaying() called during invalid state: "+this.state);
|
Log.d(LOG_TAG, "AudioPlayer Error: pausePlaying() called during invalid state: "+this.state);
|
||||||
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERROR_PAUSE_STATE+");");
|
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERR_NONE_ACTIVE+");");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -276,7 +273,7 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Log.d(LOG_TAG, "AudioPlayer Error: stopPlaying() called during invalid state: "+this.state);
|
Log.d(LOG_TAG, "AudioPlayer Error: stopPlaying() called during invalid state: "+this.state);
|
||||||
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERROR_STOP_STATE+");");
|
this.handler.sendJavascript("PhoneGap.Media.onStatus('" + this.id + "', "+MEDIA_ERROR+", "+MEDIA_ERR_NONE_ACTIVE+");");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user