Example usage for android.view.accessibility AccessibilityEvent TYPE_ANNOUNCEMENT

List of usage examples for android.view.accessibility AccessibilityEvent TYPE_ANNOUNCEMENT

Introduction

In this page you can find the example usage for android.view.accessibility AccessibilityEvent TYPE_ANNOUNCEMENT.

Prototype

int TYPE_ANNOUNCEMENT

To view the source code for android.view.accessibility AccessibilityEvent TYPE_ANNOUNCEMENT.

Click Source Link

Document

Represents the event of an application making an announcement.

Usage

From source file:com.android.tv.MainActivity.java

/**
 * Says {@code text} when accessibility is turned on.
 *///from  w w w.j  av a2s.  c om
public void sendAccessibilityText(String text) {
    if (mAccessibilityManager.isEnabled()) {
        AccessibilityEvent event = AccessibilityEvent.obtain();
        event.setClassName(getClass().getName());
        event.setPackageName(getPackageName());
        event.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
        event.getText().add(text);
        mAccessibilityManager.sendAccessibilityEvent(event);
    }
}

From source file:com.android.tv.MainActivity.java

private void tune() {
    if (DEBUG)//from w w w  . j  a  va2 s .  c  o  m
        Log.d(TAG, "tune()");
    mTuneDurationTimer.start();

    lazyInitializeIfNeeded(LAZY_INITIALIZATION_DELAY);

    // Prerequisites to be able to tune.
    if (mInputIdUnderSetup != null) {
        mTunePending = true;
        return;
    }
    mTunePending = false;
    final Channel channel = mChannelTuner.getCurrentChannel();
    if (!mChannelTuner.isCurrentChannelPassthrough()) {
        if (mTvInputManagerHelper.getTunerTvInputSize() == 0) {
            Toast.makeText(this, R.string.msg_no_input, Toast.LENGTH_SHORT).show();
            // TODO: Direct the user to a Play Store landing page for TvInputService apps.
            finish();
            return;
        }
        SetupUtils setupUtils = SetupUtils.getInstance(this);
        if (setupUtils.isFirstTune()) {
            if (!mChannelTuner.areAllChannelsLoaded()) {
                // tune() will be called, once all channels are loaded.
                stopTv("tune()", false);
                return;
            }
            if (mChannelDataManager.getChannelCount() > 0) {
                mOverlayManager.showIntroDialog();
            } else if (!Features.ONBOARDING_EXPERIENCE.isEnabled(this)) {
                mOverlayManager.showSetupFragment();
                return;
            }
        }
        if (!TvCommonUtils.isRunningInTest() && mShowNewSourcesFragment
                && setupUtils.hasUnrecognizedInput(mTvInputManagerHelper)) {
            // Show new channel sources fragment.
            runAfterAttachedToWindow(new Runnable() {
                @Override
                public void run() {
                    mOverlayManager.runAfterOverlaysAreClosed(new Runnable() {
                        @Override
                        public void run() {
                            mOverlayManager.showNewSourcesFragment();
                        }
                    });
                }
            });
        }
        mShowNewSourcesFragment = false;
        if (mChannelTuner.getBrowsableChannelCount() == 0 && mChannelDataManager.getChannelCount() > 0
                && !mOverlayManager.getSideFragmentManager().isActive()) {
            if (!mChannelTuner.areAllChannelsLoaded()) {
                return;
            }
            if (mTvInputManagerHelper.getTunerTvInputSize() == 1) {
                mOverlayManager.getSideFragmentManager().show(new CustomizeChannelListFragment());
            } else {
                showSettingsFragment();
            }
            return;
        }
        // TODO: need to refactor the following code to put in startTv.
        if (channel == null) {
            // There is no channel to tune to.
            stopTv("tune()", false);
            if (!mChannelDataManager.isDbLoadFinished()) {
                // Wait until channel data is loaded in order to know the number of channels.
                // tune() will be retried, once the channel data is loaded.
                return;
            }
            if (mOverlayManager.getSideFragmentManager().isActive()) {
                return;
            }
            mOverlayManager.showSetupFragment();
            return;
        }
        setupUtils.onTuned();
        if (mTuneParams != null) {
            Long initChannelId = mTuneParams.getLong(KEY_INIT_CHANNEL_ID);
            if (initChannelId == channel.getId()) {
                mTuneParams.remove(KEY_INIT_CHANNEL_ID);
            } else {
                mTuneParams = null;
            }
        }
    }

    mIsCurrentChannelUnblockedByUser = false;
    if (!isUnderShrunkenTvView()) {
        mLastAllowedRatingForCurrentChannel = null;
    }
    mHandler.removeMessages(MSG_UPDATE_CHANNEL_BANNER_BY_INFO_UPDATE);
    if (mAccessibilityManager.isEnabled()) {
        // For every tune, we need to inform the tuned channel or input to a user,
        // if Talkback is turned on.
        AccessibilityEvent event = AccessibilityEvent.obtain();
        event.setClassName(getClass().getName());
        event.setPackageName(getPackageName());
        event.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
        if (TvContract.isChannelUriForPassthroughInput(channel.getUri())) {
            TvInputInfo input = mTvInputManagerHelper.getTvInputInfo(channel.getInputId());
            event.getText().add(Utils.loadLabel(this, input));
        } else if (TextUtils.isEmpty(channel.getDisplayName())) {
            event.getText().add(channel.getDisplayNumber());
        } else {
            event.getText().add(channel.getDisplayNumber() + " " + channel.getDisplayName());
        }
        mAccessibilityManager.sendAccessibilityEvent(event);
    }

    boolean success = mTvView.tuneTo(channel, mTuneParams, mOnTuneListener);
    mOnTuneListener.onTune(channel, isUnderShrunkenTvView());

    mTuneParams = null;
    if (!success) {
        Toast.makeText(this, R.string.msg_tune_failed, Toast.LENGTH_SHORT).show();
        return;
    }

    // Explicitly make the TV view main to make the selected input an HDMI-CEC active source.
    mTvView.setMain();
    scheduleRestoreMainTvView();
    if (!isUnderShrunkenTvView()) {
        if (!channel.isPassthrough()) {
            addToRecentChannels(channel.getId());
        }
        Utils.setLastWatchedChannel(this, channel);
        TvApplication.getSingletons(this).getMainActivityWrapper().notifyCurrentChannelChange(this, channel);
    }
    checkChannelLockNeeded(mTvView);
    updateChannelBannerAndShowIfNeeded(UPDATE_CHANNEL_BANNER_REASON_TUNE);
    if (mActivityResumed) {
        // requestVisibleBehind should be called after onResume() is called. But, when
        // launcher is over the TV app and the screen is turned off and on, tune() can
        // be called during the pause state by mBroadcastReceiver (Intent.ACTION_SCREEN_ON).
        requestVisibleBehind(true);
    }
    updateMediaSession();
}