调用可能在当前API中不可用的Android方法

时间:2015-01-13 23:15:27

标签: android accessibility defensive-programming

我正在为盲人用户创建一款Android应用。一个可用性问题是他们的手指倾向于触摸导航栏中的“后退”按钮,他们突然发现自己不在应用程序中。

在Android 4.4 KitKat及更高版本中,我可以使用...

  getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

...隐藏导航栏。 (在早期版本中,我可以建议用户在手机周围放一条厚松紧带来隐藏导航栏。)

我想在兼容API 2.2 Froyo的应用程序中包含上述调用,而不会引发错误,因此在最近的手机上不需要弹性带。

我查看了this question,但我不太确定如何在准确的Hello World项目中应用MainActivity方法的建议答案。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // etc
    }
}

EDIT
这是我修改过的代码,现在适用于我:

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Hide:
        // * the topmost bar with the time, date, charge, carrier and other information
        // * the bar than shows the app logo and title

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
            requestWindowFeature(Window.FEATURE_NO_TITLE);

        } else {
            // On API 19 KitKat 4.4. also hide
            // * the Navigation bar that will appear at bottom or right of screen.
            getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                            | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        }
    // MORE CODE
}

0 个答案:

没有答案