FragmentActivity 始终在屏幕上

FragmentActivity always on screen

我有一个 fragmentActivity(public class WearRunActivity extends FragmentActivity),我希望它始终显示在屏幕上。

我不能setAmbientEnabled();因为它不是 wearableActivity....

我怎样才能让我的应用程序保持打开状态

您可以设置一个标志来保持您的 activity:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

但是,要非常小心并注意用户的电池消耗。您可以在不需要 activity 时立即通过调用

清除此标志
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

您应该实施 AmbientMode.AmbientCallbackProvider 回调代替。

这是新的首选方法,它仍然为您提供 WearableActivity 提供给您的所有东西,而且还允许您使用 Activity(或任何子 类...FragementActivity 等)。

Official docs call out the details (and example code):

public class MainActivity extends Activity implements AmbientMode.AmbientCallbackProvider {

    /*
     * Declare an ambient mode controller, which will be used by
     * the activity to determine if the current mode is ambient.
     */
    private AmbientMode.AmbientController mAmbientController;
    …
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    ...
        mAmbientController = AmbientMode.attachAmbientSupport(this);
    }
    ...

    …
    @Override
    public AmbientMode.AmbientCallback getAmbientCallback() {
        return new MyAmbientCallback();
    }
    …

private class MyAmbientCallback extends AmbientMode.AmbientCallback {
    @Override
    public void onEnterAmbient(Bundle ambientDetails) {
             // Handle entering ambient mode
    }

    @Override
    public void onExitAmbient() {
      // Handle exiting ambient mode
     }

    @Override
    public void onUpdateAmbient() {
      // Update the content
    }
}