游戏运行时,默认情况下的打出来的包,若长时间不操作,手机就会自动锁屏。
因产品需求,这里加一下配置,让游戏在运行时保持常亮状态。
针对IOS:
1.找到工程下\frameworks\runtime-src\proj.ios_mac\iOS路径下的AppController.mm这个文件
2.在didFinishLaunchingWithOptions方法中添加
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
修改后的代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// Add the view controller's view to the window and display.
window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds]
pixelFormat: kEAGLColorFormatRGBA8
depthFormat: GL_DEPTH24_STENCIL8_OES
preserveBackbuffer: NO
sharegroup: nil
multiSampling: NO
numberOfSamples: 0 ];
[eaglView setMultipleTouchEnabled:YES];
// Use RootViewController manage CCEAGLView
viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
viewController.wantsFullScreenLayout = YES;
viewController.view = eaglView;
// Set RootViewController to window
if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
{
// warning: addSubView doesn't work on iOS6
[window addSubview: viewController.view];
}
else
{
// use this method on ios6
[window setRootViewController:viewController];
}
[window makeKeyAndVisible];
[[UIApplication sharedApplication] setStatusBarHidden: YES];
//这里为增加的 屏蔽锁屏的配置
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
// IMPORTANT: Setting the GLView should be done after creating the RootViewController
cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView(eaglView);
cocos2d::Director::getInstance()->setOpenGLView(glview);
cocos2d::Application::getInstance()->run();
return YES;
}
2.针对Android:
1.找到工程下frameworks\runtime-src\proj.android\src\org\cocos2dx\javascript\AppActivity.java
(注意我这里是JS版本的,就在JavaScript下面,lua对应的就在lua文件夹下)
增加如下代码:
//增加对应的要引入的包
import android.content.Context;
import android.os.PowerManager;
//添加WakeLock成员
PowerManager.WakeLock mWakeLock;
//初始化WakeLock
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK,"MyLock");
mWakeLock.acquire();
//添加需要override的方法,对mWakeLock进行acquire和release
public void onDestroy()
{
super.onDestroy();
if(mWakeLock == null) {
mWakeLock.release();
}
}
public void onPause()
{
super.onPause();
if(mWakeLock != null)
{
mWakeLock.release();
mWakeLock = null;
}
}
public void onResume()
{
super.onResume();
if(mWakeLock == null)
{
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MyLock");
mWakeLock.acquire();
}
}
修改之后的AppActivity.java:
(我这里用的3.6.1的引擎,对应的版本,按上述描述的进行修改即可)
****************************************************************************/
package org.cocos2dx.javascript;
import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import android.content.Context;
import android.os.PowerManager;
public class AppActivity extends Cocos2dxActivity {
PowerManager.WakeLock mWakeLock;
@Override
public Cocos2dxGLSurfaceView onCreateView() {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK,"MyLock");
mWakeLock.acquire();
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
// TestCpp should create stencil buffer
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
return glSurfaceView;
}
public void onDestroy()
{
super.onDestroy();
if(mWakeLock == null) {
mWakeLock.release();
}
}
public void onPause()
{
super.onPause();
if(mWakeLock != null)
{
mWakeLock.release();
mWakeLock = null;
}
}
public void onResume()
{
super.onResume();
if(mWakeLock == null)
{
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MyLock");
mWakeLock.acquire();
}
}
}
2.找到工程下frameworks\runtime-src\proj.Android路径下的AndroidManifest.xml文件
添加这行代码:
<uses-permission android:name="android.permission.WAKE_LOCK"/>