You need to make the following changes:
ScreenOrientation.java
Replace with this:
package com.tsukurusha.phonegap.plugins;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
public class ScreenOrientation extends CordovaPlugin {
// Refer to http://developer.android.com/reference/android/R.attr.html#screenOrientation
private static final String UNSPECIFIED = "unspecified";
private static final String LANDSCAPE = "landscape";
private static final String PORTRAIT = "portrait";
private static final String USER = "user";
private static final String BEHIND = "behind";
private static final String SENSOR = "sensor";
private static final String NOSENSOR = "nosensor";
private static final String SENSOR_LANDSCAPE = "sensorLandscape";
private static final String SENSOR_PORTRAIT = "sensorPortrait";
private static final String REVERSE_LANDSCAPE = "reverseLandscape";
private static final String REVERSE_PORTRAIT = "reversePortrait";
private static final String FULL_SENSOR = "fullSensor";
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("set")) {
String orientation = args.optString(0);
Activity activity = this.cordova.getActivity();
if (orientation.equals(UNSPECIFIED)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
} else if (orientation.equals(LANDSCAPE)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if (orientation.equals(PORTRAIT)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation.equals(USER)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
} else if (orientation.equals(BEHIND)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_BEHIND);
} else if (orientation.equals(SENSOR)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
} else if (orientation.equals(NOSENSOR)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
} else if (orientation.equals(SENSOR_LANDSCAPE)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else if (orientation.equals(SENSOR_PORTRAIT)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else if (orientation.equals(REVERSE_LANDSCAPE)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
} else if (orientation.equals(REVERSE_PORTRAIT)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
} else if (orientation.equals(FULL_SENSOR)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
}
callbackContext.success();
return true;
} else {
return false;
}
}
}
pg-plugin-screen-orientation.js
Replace with this:
cordova.define("cordova/plugin/screenorientation", function(require, exports, module) {
var exec = require('cordova/exec');
var ScreenOrientation = function() {};
ScreenOrientation.prototype.set = function(str, successCallback, errorCallback) {
exec(successCallback,
errorCallback,
'ScreenOrientation',
'set',
[str]);
};
var screenorientation = new ScreenOrientation();
module.exports = screenorientation;
});
Then you can replace sample.html with this:
<!DOCTYPE html>
<html>
<head>
<title>ScreenOrientation PhoneGap Plugin Sample</title>
<meta charset="utf-8">
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8" src="pg-plugin-screen-orientation.js"></script>
<script type="text/javascript">
function setOrientation(type){
cordova.require('cordova/plugin/screenorientation').set(
type,
function() {
console.log("Successfully set "+type);
},
function() {
console.error("Failed to set "+type);
}
);
}
</script>
</head>
<body>
<h1>ScreenOrientation PhoneGap Plugin Sample</h1>
<input type="button" onclick="setOrientation('landscape');" value="Landscape" />
<input type="button" onclick="setOrientation('portrait');" value="Portrait" />
<input type="button" onclick="setOrientation('sensorLandscape');" value="Sensor Landscape" />
<input type="button" onclick="setOrientation('sensorPortrait');" value="Sensor Portrait" />
<input type="button" onclick="setOrientation('reverseLandscape');" value="Reverse Landscape" />
<input type="button" onclick="setOrientation('reversePortrait');" value="Reverse Portrait" />
<input type="button" onclick="setOrientation('fullSensor');" value="Full Sensor" />
</body>
</html>
I've put this together as an Eclipse project - you can download it and the resulting APK here
Note: You might want downgrade from Cordova 2.8.0 to Cordova 2.4.0 until issues with pausing the app in Cordova 2.5.0+ have been resolved - see here
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…