github_2011
github_2011
采纳率100%
2017-05-25 09:11

横屏应用startActivityForResult后竖屏显示

已采纳
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);

应用所有界面都是横屏显示的,调用开始蓝牙的代码,开启蓝牙界面是竖屏的,屏幕发生旋转给用户的体验不好,如何让开启蓝牙的界面也是横屏的?
这种问题在华为honor v8手机上没有,魅族S3和oppo R9手机上出现了。
效果如下图:
屏幕旋转效果图

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • qq_27945669 小笨笨天 4年前

    startActivityForResult来启动蓝牙开启界面就会向楼主说的那样,横屏显示界面。测试发现,不适用startActivityForResult的是形式,直接适用bluetoothtAdapter.enable()强制开启,就不会出现这个显现了。

    点赞 评论 复制链接分享
  • fight_in_dl 战在春秋 4年前

    两种方法:
    1 代码

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    setContentView(R.layout.disable_android_orientation_change);
    ...............
    }

    2 AndroidManifest.xml文件

       <activity android:name=".DisableScreenRotationAndroid" android:screenOrientation="landscape">
    

    用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢

    点赞 评论 复制链接分享
  • w525721508 ready_z 4年前

    在AndroidManifest.xml里固定死activity的横屏模式就行了。别在java代码去设置横屏,这样只是临时状态

    点赞 评论 复制链接分享
  • github_2011 github_2011 4年前

    BluetoothAdapter类中的enable()方法我是知道的,它是暴力打开蓝牙的一种方式,因为官方文档对它的介绍,导致我没有使用它,感觉被误导了,什么事还是
    亲自试验了才知道.
    enable()方法官网介绍 "点击进入")
    enable()方法介绍
    官网中明确指出了If you want to turn on Bluetooth in order to create a wireless connection,you should use the ACTION_REQUEST_ENABLE
    Intent, which will raise a dialog that requests user permission to turn on Bluetooth.我看到这之后就坚信使用startActivityForResult(intent)来
    打开蓝牙建立无线连接了,enable()这个方法在低版本的Android手机中是没有任何提醒,直接打开蓝牙的,最初我还以为通过这种方式打开蓝牙不能建立
    无线连接,直至昨天下午把我身边的测试机试了一遍,发现这个API还是可以用的,从目前的效果来看应该说是很好用。
    不过多少还是有隐隐的担忧,官方文档的介绍并不推荐采用这种方式,不知道是不是哪些地方有隐患?
    下面说一下使用enable()这种方式测试的结果:
    一般新出的机型调用这个API还是会弹框提醒的,并不是默默的强制打开蓝牙(华为荣耀V8、小米5、Oppo R9)
    有些手机并没有弹框提醒(多为Android低版本手机 例如小米手机 红米2A)
    魅族S3手机弹框提醒打开蓝牙,若是拒绝之后,之后不再弹框提醒,发现应用权限管理里面关于打开蓝牙的权限已经是禁止了,但是弹框的时候并没有看到
    下次不再弹框提醒的选项,这个稍微有点坑,其它手机若是拒绝打开,下次进入应用还是会继续提醒打开的.
    虽然对于这个方法有些隐隐的担忧,但是它还是解决了我之前提出的问题:
    除了强制打开不弹框提醒的手机之外,只要是弹出对话框提醒的手机都是在横屏状态弹出的对话框,屏幕并未发生旋转,很好的解决了之前的问题.
    现在项目中已经在使用enable()这种方式打开蓝牙了,后期如果遇到坑,会继续更新问答.
    下面简单说一下enable()的使用:
    因为这种打开蓝牙的方式是异步的,在调用enable()方法之后,我们需要注册广播监听BluetoothAdapter.ACTION_STATE_CHANGED的改变,当它的
    BluetoothAdapter.EXTRA_STATE状态为BluetoothAdapter.STATE_ON时说明蓝牙已经打开成功,这时可以进行扫描设备连接设备的操作.

    点赞 评论 复制链接分享
  • qq_27945669 小笨笨天 4年前

    哥们 解决了吗? 求指教

    点赞 评论 复制链接分享