cocos2d 游戏运行时保持常亮即让手机不自动锁屏

游戏运行时,默认情况下的打出来的包,若长时间不操作,手机就会自动锁屏。
因产品需求,这里加一下配置,让游戏在运行时保持常亮状态。

针对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"/>  

如图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值