Search in sources :

Example 1 with DefaultDownloadReceiver

use of com.quran.labs.androidquran.service.util.DefaultDownloadReceiver in project quran_android by quran.

the class SearchActivity method downloadArabicSearchDb.

private void downloadArabicSearchDb() {
    if (downloadReceiver == null) {
        downloadReceiver = new DefaultDownloadReceiver(this, QuranDownloadService.DOWNLOAD_TYPE_ARABIC_SEARCH_DB);
        LocalBroadcastManager.getInstance(this).registerReceiver(downloadReceiver, new IntentFilter(QuranDownloadNotifier.ProgressIntent.INTENT_NAME));
    }
    downloadReceiver.setListener(this);
    String url = quranFileUtils.getArabicSearchDatabaseUrl();
    String notificationTitle = getString(R.string.search_data);
    Intent intent = ServiceIntentHelper.getDownloadIntent(this, url, quranFileUtils.getQuranDatabaseDirectory(this), notificationTitle, SEARCH_INFO_DOWNLOAD_KEY, QuranDownloadService.DOWNLOAD_TYPE_ARABIC_SEARCH_DB);
    intent.putExtra(QuranDownloadService.EXTRA_OUTPUT_FILE_NAME, QuranDataProvider.QURAN_ARABIC_DATABASE);
    startService(intent);
}
Also used : IntentFilter(android.content.IntentFilter) DefaultDownloadReceiver(com.quran.labs.androidquran.service.util.DefaultDownloadReceiver) Intent(android.content.Intent) SpannableString(android.text.SpannableString)

Example 2 with DefaultDownloadReceiver

use of com.quran.labs.androidquran.service.util.DefaultDownloadReceiver in project quran_android by quran.

the class QuranDataActivity method onResume.

@Override
protected void onResume() {
    super.onResume();
    isPaused = false;
    downloadReceiver = new DefaultDownloadReceiver(this, QuranDownloadService.DOWNLOAD_TYPE_PAGES);
    downloadReceiver.setCanCancelDownload(true);
    String action = QuranDownloadNotifier.ProgressIntent.INTENT_NAME;
    LocalBroadcastManager.getInstance(this).registerReceiver(downloadReceiver, new IntentFilter(action));
    downloadReceiver.setListener(this);
    checkPermissions();
}
Also used : IntentFilter(android.content.IntentFilter) DefaultDownloadReceiver(com.quran.labs.androidquran.service.util.DefaultDownloadReceiver)

Example 3 with DefaultDownloadReceiver

use of com.quran.labs.androidquran.service.util.DefaultDownloadReceiver in project quran_android by quran.

the class PagerActivity method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    QuranApplication quranApp = (QuranApplication) getApplication();
    quranApp.refreshLocale(this, false);
    super.onCreate(savedInstanceState);
    // field injection
    getPagerActivityComponent().inject(this);
    bookmarksCache = new SparseBooleanArray();
    boolean shouldAdjustPageNumber = false;
    isDualPages = QuranUtils.isDualPages(this, quranScreenInfo);
    // remove the window background to avoid overdraw. note that, per Romain's blog, this is
    // acceptable (as long as we don't set the background color to null in the theme, since
    // that is used to generate preview windows).
    getWindow().setBackgroundDrawable(null);
    numberOfPages = quranInfo.getNumberOfPages();
    numberOfPagesDual = quranInfo.getNumberOfPagesDual();
    int page = -1;
    isActionBarHidden = true;
    if (savedInstanceState != null) {
        Timber.d("non-null saved instance state!");
        DownloadAudioRequest lastAudioRequest = savedInstanceState.getParcelable(LAST_AUDIO_DL_REQUEST);
        if (lastAudioRequest != null) {
            Timber.d("restoring request from saved instance!");
            lastAudioDownloadRequest = lastAudioRequest;
        }
        page = savedInstanceState.getInt(LAST_READ_PAGE, -1);
        if (page != -1) {
            page = numberOfPages - page;
        }
        showingTranslation = savedInstanceState.getBoolean(LAST_READING_MODE_IS_TRANSLATION, false);
        if (savedInstanceState.containsKey(LAST_ACTIONBAR_STATE)) {
            isActionBarHidden = !savedInstanceState.getBoolean(LAST_ACTIONBAR_STATE);
        }
        boolean lastWasDualPages = savedInstanceState.getBoolean(LAST_WAS_DUAL_PAGES, isDualPages);
        shouldAdjustPageNumber = (lastWasDualPages != isDualPages);
        start = savedInstanceState.getParcelable(LAST_START_POINT);
        end = savedInstanceState.getParcelable(LAST_ENDING_POINT);
        this.lastAudioRequest = savedInstanceState.getParcelable(LAST_AUDIO_REQUEST);
    } else {
        Intent intent = getIntent();
        Bundle extras = intent.getExtras();
        if (extras != null) {
            page = numberOfPages - extras.getInt("page", Constants.PAGES_FIRST);
            showingTranslation = extras.getBoolean(EXTRA_JUMP_TO_TRANSLATION, showingTranslation);
            highlightedSura = extras.getInt(EXTRA_HIGHLIGHT_SURA, -1);
            highlightedAyah = extras.getInt(EXTRA_HIGHLIGHT_AYAH, -1);
        }
    }
    compositeDisposable = new CompositeDisposable();
    // subscribe to changes in bookmarks
    compositeDisposable.add(bookmarkModel.bookmarksObservable().observeOn(AndroidSchedulers.mainThread()).subscribe(ignore -> {
        onBookmarksChanged();
    }));
    final Resources resources = getResources();
    isImmersiveInPortrait = resources.getBoolean(R.bool.immersive_in_portrait);
    isLandscape = resources.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
    ayahToolBarTotalHeight = resources.getDimensionPixelSize(R.dimen.toolbar_total_height);
    setContentView(R.layout.quran_page_activity_slider);
    audioStatusBar = (AudioStatusBar) findViewById(R.id.audio_area);
    audioStatusBar.setIsDualPageMode(quranScreenInfo.isDualPageMode());
    audioStatusBar.setQariList(audioUtils.getQariList(this));
    audioStatusBar.setAudioBarListener(this);
    audioBarParams = (ViewGroup.MarginLayoutParams) audioStatusBar.getLayoutParams();
    toolBarArea = findViewById(R.id.toolbar_area);
    translationsSpinner = (QuranSpinner) findViewById(R.id.spinner);
    // this is the colored view behind the status bar on kitkat and above
    final View statusBarBackground = findViewById(R.id.status_bg);
    statusBarBackground.getLayoutParams().height = getStatusBarHeight();
    final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    if (quranSettings.isArabicNames() || QuranUtils.isRtl()) {
        // remove when we remove LTR from quran_page_activity's root
        ViewCompat.setLayoutDirection(toolbar, ViewCompat.LAYOUT_DIRECTION_RTL);
    }
    setSupportActionBar(toolbar);
    final ActionBar ab = getSupportActionBar();
    if (ab != null) {
        ab.setDisplayShowHomeEnabled(true);
        ab.setDisplayHomeAsUpEnabled(true);
    }
    initAyahActionPanel();
    if (showingTranslation && translationItems != null) {
        updateActionBarSpinner();
    } else {
        updateActionBarTitle(numberOfPages - page);
    }
    lastPopupTime = System.currentTimeMillis();
    pagerAdapter = new QuranPageAdapter(getSupportFragmentManager(), isDualPages, showingTranslation, quranInfo);
    ayahToolBar = (AyahToolBar) findViewById(R.id.ayah_toolbar);
    final NonRestoringViewPager nonRestoringViewPager = findViewById(R.id.quran_pager);
    nonRestoringViewPager.setIsDualPagesInLandscape(QuranUtils.isDualPagesInLandscape(this, quranScreenInfo));
    viewPager = nonRestoringViewPager;
    viewPager.setAdapter(pagerAdapter);
    ayahToolBar.setOnItemSelectedListener(new AyahMenuItemSelectionHandler());
    viewPager.addOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageScrollStateChanged(int state) {
        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            if (ayahToolBar.isShowing() && ayahToolBarPos != null) {
                final int startPage = quranInfo.getPageFromSuraAyah(start.sura, start.ayah);
                int barPos = quranInfo.getPosFromPage(startPage, isDualPages);
                if (position == barPos) {
                    // Swiping to next ViewPager page (i.e. prev quran page)
                    ayahToolBarPos.xScroll = 0 - positionOffsetPixels;
                } else if (position == barPos - 1) {
                    // Swiping to prev ViewPager page (i.e. next quran page)
                    ayahToolBarPos.xScroll = viewPager.getWidth() - positionOffsetPixels;
                } else {
                    // Totally off screen, should hide toolbar
                    ayahToolBar.setVisibility(View.GONE);
                    return;
                }
                ayahToolBar.updatePosition(ayahToolBarPos);
                // If the toolbar is not showing, show it
                if (ayahToolBar.getVisibility() != View.VISIBLE) {
                    ayahToolBar.setVisibility(View.VISIBLE);
                }
            }
        }

        @Override
        public void onPageSelected(int position) {
            Timber.d("onPageSelected(): %d", position);
            final int page = quranInfo.getPageFromPos(position, isDualPages);
            if (quranSettings.shouldDisplayMarkerPopup()) {
                lastPopupTime = QuranDisplayHelper.displayMarkerPopup(PagerActivity.this, quranInfo, page, lastPopupTime);
                if (isDualPages) {
                    lastPopupTime = QuranDisplayHelper.displayMarkerPopup(PagerActivity.this, quranInfo, page - 1, lastPopupTime);
                }
            }
            if (!showingTranslation) {
                updateActionBarTitle(page);
            } else {
                refreshActionBarSpinner();
            }
            if (bookmarksCache.indexOfKey(page) < 0) {
                if (isDualPages) {
                    if (bookmarksCache.indexOfKey(page - 1) < 0) {
                        checkIfPageIsBookmarked(page - 1, page);
                    }
                } else {
                    // we don't have the key
                    checkIfPageIsBookmarked(page);
                }
            }
            // If we're more than 1 page away from ayah selection end ayah mode
            if (isInAyahMode) {
                final int startPage = quranInfo.getPageFromSuraAyah(start.sura, start.ayah);
                int ayahPos = quranInfo.getPosFromPage(startPage, isDualPages);
                if (Math.abs(ayahPos - position) > 1) {
                    endAyahMode();
                }
            }
        }
    });
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        setUiVisibilityListener();
        audioStatusBar.setVisibility(View.VISIBLE);
    }
    toggleActionBarVisibility(true);
    if (shouldAdjustPageNumber) {
        // when going from two page per screen to one or vice versa, we adjust the page number,
        // such that the first page is always selected.
        int curPage = numberOfPages - page;
        if (isDualPages) {
            if (curPage % 2 != 0) {
                curPage++;
            }
            curPage = numberOfPagesDual - (curPage / 2);
        } else {
            if (curPage % 2 == 0) {
                curPage--;
            }
            curPage = numberOfPages - curPage;
        }
        page = curPage;
    } else if (isDualPages) {
        page = page / 2;
    }
    viewPager.setCurrentItem(page);
    // just got created, need to reconnect to service
    shouldReconnect = true;
    // enforce orientation lock
    if (quranSettings.isLockOrientation()) {
        int current = getResources().getConfiguration().orientation;
        if (quranSettings.isLandscapeOrientation()) {
            if (current == Configuration.ORIENTATION_PORTRAIT) {
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                return;
            }
        } else if (current == Configuration.ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            return;
        }
    }
    LocalBroadcastManager.getInstance(this).registerReceiver(audioReceiver, new IntentFilter(AudioService.AudioUpdateIntent.INTENT_NAME));
    downloadReceiver = new DefaultDownloadReceiver(this, QuranDownloadService.DOWNLOAD_TYPE_AUDIO);
    String action = QuranDownloadNotifier.ProgressIntent.INTENT_NAME;
    LocalBroadcastManager.getInstance(this).registerReceiver(downloadReceiver, new IntentFilter(action));
    downloadReceiver.setListener(this);
}
Also used : Bundle(android.os.Bundle) AUDIO_PAGE(com.quran.labs.androidquran.ui.helpers.SlidingPagerAdapter.AUDIO_PAGE) AyahInfoDatabaseProvider(com.quran.labs.androidquran.data.AyahInfoDatabaseProvider) QuranSpinner(com.quran.labs.androidquran.widgets.QuranSpinner) AyahToolBar(com.quran.labs.androidquran.widgets.AyahToolBar) QuranPageAdapter(com.quran.labs.androidquran.ui.helpers.QuranPageAdapter) OnPageChangeListener(android.support.v4.view.ViewPager.OnPageChangeListener) Handler(android.os.Handler) TranslationsDBAdapter(com.quran.labs.androidquran.database.TranslationsDBAdapter) TargetApi(android.annotation.TargetApi) AudioStatusBar(com.quran.labs.androidquran.widgets.AudioStatusBar) TabletFragment(com.quran.labs.androidquran.ui.fragment.TabletFragment) IntentFilter(android.content.IntentFilter) Fragment(android.support.v4.app.Fragment) Set(java.util.Set) PagerActivityComponent(com.quran.labs.androidquran.component.activity.PagerActivityComponent) QuranScreenInfo(com.quran.labs.androidquran.util.QuranScreenInfo) HelpActivity(com.quran.labs.androidquran.HelpActivity) HapticFeedbackConstants(android.view.HapticFeedbackConstants) NonRestoringViewPager(android.support.v4.view.NonRestoringViewPager) Message(android.os.Message) DisposableObserver(io.reactivex.observers.DisposableObserver) TranslationsSpinnerAdapter(com.quran.labs.androidquran.ui.util.TranslationsSpinnerAdapter) QariItem(com.quran.labs.androidquran.common.QariItem) DisposableSingleObserver(io.reactivex.observers.DisposableSingleObserver) TAG_PAGE(com.quran.labs.androidquran.ui.helpers.SlidingPagerAdapter.TAG_PAGE) QuranDownloadService(com.quran.labs.androidquran.service.QuranDownloadService) NonNull(android.support.annotation.NonNull) AudioUtils(com.quran.labs.androidquran.util.AudioUtils) StreamingAudioRequest(com.quran.labs.androidquran.service.util.StreamingAudioRequest) BookmarkModel(com.quran.labs.androidquran.model.bookmark.BookmarkModel) QuranDataProvider(com.quran.labs.androidquran.data.QuranDataProvider) MenuInflater(android.view.MenuInflater) Toast(android.widget.Toast) Menu(android.view.Menu) QuranFileUtils(com.quran.labs.androidquran.util.QuranFileUtils) Observable(io.reactivex.Observable) SearchActivity(com.quran.labs.androidquran.SearchActivity) ComponentName(android.content.ComponentName) QuranDownloadNotifier(com.quran.labs.androidquran.service.util.QuranDownloadNotifier) TRANSLATION_PAGE(com.quran.labs.androidquran.ui.helpers.SlidingPagerAdapter.TRANSLATION_PAGE) ProgressDialog(android.app.ProgressDialog) TextUtils(android.text.TextUtils) QuranApplication(com.quran.labs.androidquran.QuranApplication) File(java.io.File) FragmentManager(android.support.v4.app.FragmentManager) AlertDialog(android.support.v7.app.AlertDialog) SparseBooleanArray(android.util.SparseBooleanArray) SharedPreferences(android.content.SharedPreferences) Toolbar(android.support.v7.widget.Toolbar) Configuration(android.content.res.Configuration) QuranPreferenceActivity(com.quran.labs.androidquran.QuranPreferenceActivity) DownloadAudioRequest(com.quran.labs.androidquran.service.util.DownloadAudioRequest) SearchView(android.support.v7.widget.SearchView) Constants(com.quran.labs.androidquran.data.Constants) WindowManager(android.view.WindowManager) ShareUtil(com.quran.labs.androidquran.util.ShareUtil) LocalBroadcastManager(android.support.v4.content.LocalBroadcastManager) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) AddTagDialog(com.quran.labs.androidquran.ui.fragment.AddTagDialog) HighlightType(com.quran.labs.androidquran.ui.helpers.HighlightType) AyahSelectedListener(com.quran.labs.androidquran.ui.helpers.AyahSelectedListener) ActivityInfo(android.content.pm.ActivityInfo) R(com.quran.labs.androidquran.R) View(android.view.View) Schedulers(io.reactivex.schedulers.Schedulers) ViewCompat(android.support.v4.view.ViewCompat) QuranAppUtils(com.quran.labs.androidquran.util.QuranAppUtils) PreferenceManager(android.preference.PreferenceManager) AyahToolBarPosition(com.quran.labs.androidquran.widgets.AyahToolBar.AyahToolBarPosition) SlidingUpPanelLayout(com.quran.labs.androidquran.widgets.SlidingUpPanelLayout) AudioRequest(com.quran.labs.androidquran.service.util.AudioRequest) AyahActionFragment(com.quran.labs.androidquran.ui.fragment.AyahActionFragment) AudioService(com.quran.labs.androidquran.service.AudioService) MenuItemCompat(android.support.v4.view.MenuItemCompat) LocalTranslation(com.quran.labs.androidquran.common.LocalTranslation) QuranDisplayHelper(com.quran.labs.androidquran.ui.helpers.QuranDisplayHelper) BroadcastReceiver(android.content.BroadcastReceiver) ViewGroup(android.view.ViewGroup) Timber(timber.log.Timber) PAGES(com.quran.labs.androidquran.ui.helpers.SlidingPagerAdapter.PAGES) List(java.util.List) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) QuranInfo(com.quran.labs.androidquran.data.QuranInfo) DefaultDownloadReceiver(com.quran.labs.androidquran.service.util.DefaultDownloadReceiver) TranslationFragment(com.quran.labs.androidquran.ui.fragment.TranslationFragment) Nullable(android.support.annotation.Nullable) SearchManager(android.app.SearchManager) RecentPagePresenter(com.quran.labs.androidquran.presenter.bookmark.RecentPagePresenter) Context(android.content.Context) ArabicDatabaseUtils(com.quran.labs.androidquran.model.translation.ArabicDatabaseUtils) KeyEvent(android.view.KeyEvent) JumpFragment(com.quran.labs.androidquran.ui.fragment.JumpFragment) ViewPager(android.support.v4.view.ViewPager) ServiceIntentHelper(com.quran.labs.androidquran.service.util.ServiceIntentHelper) Intent(android.content.Intent) QuranUtils(com.quran.labs.androidquran.util.QuranUtils) Single(io.reactivex.Single) MenuItem(android.view.MenuItem) IconPageIndicator(com.quran.labs.androidquran.widgets.IconPageIndicator) HashSet(java.util.HashSet) Inject(javax.inject.Inject) TagBookmarkDialog(com.quran.labs.androidquran.ui.fragment.TagBookmarkDialog) SuraAyah(com.quran.labs.androidquran.data.SuraAyah) QuranSettings(com.quran.labs.androidquran.util.QuranSettings) Build(android.os.Build) WeakReference(java.lang.ref.WeakReference) ActionBar(android.support.v7.app.ActionBar) SlidingPagerAdapter(com.quran.labs.androidquran.ui.helpers.SlidingPagerAdapter) QuranPageWorker(com.quran.labs.androidquran.ui.helpers.QuranPageWorker) QuranPage(com.quran.labs.androidquran.ui.helpers.QuranPage) AyahTracker(com.quran.labs.androidquran.ui.helpers.AyahTracker) JumpDestination(com.quran.labs.androidquran.ui.helpers.JumpDestination) Pair(android.support.v4.util.Pair) PagerActivityModule(com.quran.labs.androidquran.module.activity.PagerActivityModule) Resources(android.content.res.Resources) IntentFilter(android.content.IntentFilter) Bundle(android.os.Bundle) ViewGroup(android.view.ViewGroup) OnPageChangeListener(android.support.v4.view.ViewPager.OnPageChangeListener) Intent(android.content.Intent) SearchView(android.support.v7.widget.SearchView) View(android.view.View) QuranApplication(com.quran.labs.androidquran.QuranApplication) NonRestoringViewPager(android.support.v4.view.NonRestoringViewPager) DefaultDownloadReceiver(com.quran.labs.androidquran.service.util.DefaultDownloadReceiver) SparseBooleanArray(android.util.SparseBooleanArray) QuranPageAdapter(com.quran.labs.androidquran.ui.helpers.QuranPageAdapter) DownloadAudioRequest(com.quran.labs.androidquran.service.util.DownloadAudioRequest) Resources(android.content.res.Resources) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) ActionBar(android.support.v7.app.ActionBar) Toolbar(android.support.v7.widget.Toolbar)

Example 4 with DefaultDownloadReceiver

use of com.quran.labs.androidquran.service.util.DefaultDownloadReceiver in project quran_android by quran.

the class TranslationManagerActivity method downloadItem.

private void downloadItem(TranslationRowData translationRowData) {
    TranslationItem selectedItem = (TranslationItem) translationRowData;
    if (selectedItem.exists() && !selectedItem.needsUpgrade()) {
        return;
    }
    downloadingItem = selectedItem;
    if (mDownloadReceiver == null) {
        mDownloadReceiver = new DefaultDownloadReceiver(this, QuranDownloadService.DOWNLOAD_TYPE_TRANSLATION);
        LocalBroadcastManager.getInstance(this).registerReceiver(mDownloadReceiver, new IntentFilter(QuranDownloadNotifier.ProgressIntent.INTENT_NAME));
    }
    mDownloadReceiver.setListener(this);
    // actually start the download
    String url = selectedItem.translation.getFileUrl();
    if (selectedItem.translation.getFileUrl() == null) {
        return;
    }
    String destination = databaseDirectory;
    Timber.d("downloading %s to %s", url, destination);
    if (selectedItem.exists()) {
        try {
            File f = new File(destination, selectedItem.translation.getFileName());
            if (f.exists()) {
                File newPath = new File(destination, selectedItem.translation.getFileName() + UPGRADING_EXTENSION);
                if (newPath.exists()) {
                    newPath.delete();
                }
                f.renameTo(newPath);
            }
        } catch (Exception e) {
            Timber.d(e, "error backing database file up");
        }
    }
    // start the download
    String notificationTitle = selectedItem.name();
    Intent intent = ServiceIntentHelper.getDownloadIntent(this, url, destination, notificationTitle, TRANSLATION_DOWNLOAD_KEY, QuranDownloadService.DOWNLOAD_TYPE_TRANSLATION);
    String filename = selectedItem.translation.getFileName();
    if (url.endsWith("zip")) {
        filename += ".zip";
    }
    intent.putExtra(QuranDownloadService.EXTRA_OUTPUT_FILE_NAME, filename);
    startService(intent);
}
Also used : TranslationItem(com.quran.labs.androidquran.dao.translation.TranslationItem) IntentFilter(android.content.IntentFilter) DefaultDownloadReceiver(com.quran.labs.androidquran.service.util.DefaultDownloadReceiver) Intent(android.content.Intent) File(java.io.File)

Example 5 with DefaultDownloadReceiver

use of com.quran.labs.androidquran.service.util.DefaultDownloadReceiver in project quran_android by quran.

the class AudioManagerActivity method onResume.

@Override
protected void onResume() {
    super.onResume();
    downloadReceiver = new DefaultDownloadReceiver(this, QuranDownloadService.DOWNLOAD_TYPE_AUDIO);
    downloadReceiver.setCanCancelDownload(true);
    LocalBroadcastManager.getInstance(this).registerReceiver(downloadReceiver, new IntentFilter(QuranDownloadNotifier.ProgressIntent.INTENT_NAME));
    downloadReceiver.setListener(this);
}
Also used : IntentFilter(android.content.IntentFilter) DefaultDownloadReceiver(com.quran.labs.androidquran.service.util.DefaultDownloadReceiver)

Aggregations

IntentFilter (android.content.IntentFilter)5 DefaultDownloadReceiver (com.quran.labs.androidquran.service.util.DefaultDownloadReceiver)5 Intent (android.content.Intent)3 File (java.io.File)2 TargetApi (android.annotation.TargetApi)1 ProgressDialog (android.app.ProgressDialog)1 SearchManager (android.app.SearchManager)1 BroadcastReceiver (android.content.BroadcastReceiver)1 ComponentName (android.content.ComponentName)1 Context (android.content.Context)1 SharedPreferences (android.content.SharedPreferences)1 ActivityInfo (android.content.pm.ActivityInfo)1 Configuration (android.content.res.Configuration)1 Resources (android.content.res.Resources)1 Build (android.os.Build)1 Bundle (android.os.Bundle)1 Handler (android.os.Handler)1 Message (android.os.Message)1 PreferenceManager (android.preference.PreferenceManager)1 NonNull (android.support.annotation.NonNull)1