我正在为零售亭建立一个AIR-> Android应用程序。我们将隐藏“状态栏”'所以该应用程序是全屏的,并没有软按钮栏(它也将使用第三方应用程序锁定到信息亭模式)。
当我在设备上发布并运行我的应用程序并隐藏状态栏时,可以在原始状态栏的位置看到Flash舞台颜色。这个空间应该填充应用程序内容(全屏图像等),但最初包含该栏的68px空间只是纯白色(或者舞台设置为的任何backgroundColor)
经过大量的反复试验后,我已经确定了将renderMode设置为直接在app描述符xml中的事实。如果我删除此应用程序内容填满屏幕,但显然我无法访问GPU加速渲染系统。
我认为这与AIR有关,询问设备硬件的分辨率,即使实际像素数为1920x1080,也会返回1920x1032。因此,在引擎盖下,AIR仅设置一个1920x1032的可渲染窗口(当处于renderMode> direct时)。
有没有人知道在renderMode> direct时启用真正全屏的方法?
答案 0 :(得分:1)
Android MEtrics ANE是最简单的组合之一。这是我的一个获得x分辨率的样本。如果您没有经验可能是正确的ANE的经验:
@Override
public FREObject call(FREContext arg0, FREObject[] arg1)
{
try
{
DisplayMetrics metrics = arg0.getActivity().getResources().getDisplayMetrics();
int realWidth = metrics.widthPixels;
try
{
Display display = arg0.getActivity().getWindowManager().getDefaultDisplay();
display.getRealMetrics(metrics);
int rawWidth = metrics.widthPixels;
if(rawWidth > realWidth)
{
realWidth = rawWidth;
}
}
catch(Exception e)
{
}
try
{
Display display = arg0.getActivity().getWindowManager().getDefaultDisplay();
int rawWidth = 0;
Method getRawWidth = Display.class.getMethod("getRawWidth");
rawWidth = (Integer) getRawWidth.invoke(display);
if(rawWidth > realWidth)
{
realWidth = rawWidth;
}
}
catch(Exception e)
{
}
FREObject baseValue = FREObject.newObject(realWidth);
return baseValue;
}
catch(Exception e)
{
}
return null;
}
答案 1 :(得分:0)
Scalefusion在Kiosk软件中提供了解决方案,该解决方案启用了以下功能:安全性和保护,远程管理和大规模部署,应用程序和用户管理,运行状况监视和诊断以及运行状况监视和诊断。
我们的Retail Kiosk Software主要基于从DeviceAdminReceiver和ComponentName继承的类。首先,我们必须告诉系统我们的应用程序假装成为设备管理员。为此,我们可以在AndroidManifest.xml中添加一个包含名称为android.app.device_admin的元数据的接收器:
<application
...
android:testOnly="true">
<receiver
android:name=".MyDeviceAdminReceiver"
android:description="@string/admin_description"
android:label="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin_receiver" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
</intent-filter>
</receiver>