FragmentActivity总是在屏幕上

时间:2015-09-29 10:31:17

标签: wear-os android-fragmentactivity

我有一个fragmentActivity(公共类WearRunActivity扩展了FragmentActivity),我希望它始终在屏幕上显示。

我无法设置AmbientEnabled();因为它不是一个可穿戴的活动....

如何保持我的应用

2 个答案:

答案 0 :(得分:1)

您可以设置一个标记来保持您的活动:

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

但是,要非常小心并注意用户的电池消耗。只要您不需要通过调用

来保持活动,就可以清除此标记
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

答案 1 :(得分:0)

您应该实施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
    }
}