看你的framebuffer的驱动中,有没有相关的代码,可能触摸屏的驱动也要修改。

解决方案 »

  1.   

    frameworks/base/core/java/android/hardware/SensorManager.java
    还好楼主不需要去读底层的一些3轴加速度之类的,可以在里面直接设置吧。具体也没怎么看过,不过应该是在这个地方了。研究研究
      

  2.   

    private static int sRotation = Surface.ROTATION_0;
    这个出始改为 private static int sRotation = Surface.ROTATION_90;么试试?
      

  3.   

    这个改过 ,是在frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java这个文件里面的updateRotation改的但是每次烧机之后都不正常,其他的时候都正常
    弱弱的抱怨下。。待在这里天天改bug心里纠结 想换
      

  4.   

     http://blog.csdn.net/knock/archive/2010/03/01/5335767.aspx
    这里有个说横竖屏切换的但他那个第三步不知道怎么改不知道那代码说的啥,高深,或者是我不懂c的缘故
      

  5.   

    看看
    status_t SurfaceFlinger::readyToRun()中
        //const uint32_t w = hw.getWidth();
        //const uint32_t h = hw.getHeight();
    //swap w&h for portrait display in landscape panel. jeff.
        const uint32_t h = hw.getWidth(); 
        const uint32_t w = hw.getHeight();
    这个是因为机器是横屏,却要竖的显示,交换了h,w的值,可以理解为view显示的范围,面积设定好了,下面就是旋转显示的view了...
    下班了。改天再看那部分源码
      

  6.   

    同情楼主,我有类似的经历,不过客户是要求横屏改成竖屏,我是在PhoneWindowManager.java里修改的。感觉除了开机一瞬间有个旋转的动作,其他的没什么了,我之前找到过一个文档,从kernel到系统的修改讲得很详细,但是没去改过kernel,不知道楼主能否google一下看不能不能找到吧。
      

  7.   


    哥哥啊,我可是一直在等着你。 少打了个字,sorry
      

  8.   

    不好意思,家里电脑还没源码,对底层不太熟悉,也是今天中午时看了下资料
    还是看他的代码吧
    graphicPlane 缓冲区输出管理(楼主可以看这篇文章 ttp://blog.csdn.net/maxleng/archive/2010/06/14/5671271.aspx)
    -------------------------------------------------------------
    GraphicPlane::GraphicPlane()
        : mHw(0)
    {
    /*
    重置mOrientationTransform一些参数为90度的情况,因为以前默认的是0 度初始的情况,所以要修改里面的实现Transform.cpp中的reset函数,可以模仿orientationToTransfrom为90度的情况,所以要修改为
    void Transform::reset() {
        mTransform.reset();
        mType = 0;
        set(0,-1,1,0);
        const DisplayHardware& hw(displayHardware());
        const float w = hw.getWidth();
        float x = w;
        set(x,0);
    }
    */
     mOrientationTransform.reset();                    
     mOrientation = ISurfaceComposer::eOrientation90;        //设置初始 90度
     mGlobalTransform = mOrientationTransform * mTransform;  //这个是目标转换90度的情况
    }
    因为初始话的一些东西被修改了,因此也要修改其中的
    status_t GraphicPlane::setOrientation(int orientation)
    {
           //对orientation等于90 的判断,初始值已经被修改为90了
           if (orientation == ISurfaceComposer::eOrientation90) {
            // make sure the default orientation is optimal
            mOrientationTransform.reset();
            mOrientation = orientation;
            //mGlobalTransform = mTransform;
           mGlobalTransform  = mOrientationTransform * mTransform//目标变换应该是这个了
            return NO_ERROR;
        }
    }
    按他的代码来了,整体框架不熟悉,但是感觉要修改初始就转变90度,无非就是修改初始化屏幕的时候,把它当成已经转了90度时的参数
      

  9.   

    楼主照这个网址:
    http://blog.csdn.net/knock/archive/2010/03/01/5335767.aspx
    试了没有?