Example usage for android.content.pm PackageManager hasSystemFeature

List of usage examples for android.content.pm PackageManager hasSystemFeature

Introduction

In this page you can find the example usage for android.content.pm PackageManager hasSystemFeature.

Prototype

public abstract boolean hasSystemFeature(String name);

Source Link

Document

Check whether the given feature name is one of the available features as returned by #getSystemAvailableFeatures() .

Usage

From source file:com.affectiva.affdexme.MainActivity.java

/**
 * We check to make sure the device has a front-facing camera.
 * If it does not, we obscure the app with a notice informing the user they cannot
 * use the app.//ww  w .j  a v  a 2  s.  co m
 */
void determineCameraAvailability() {
    PackageManager manager = getPackageManager();
    isFrontFacingCameraDetected = manager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT);
    isBackFacingCameraDetected = manager.hasSystemFeature(PackageManager.FEATURE_CAMERA);

    if (!isFrontFacingCameraDetected && !isBackFacingCameraDetected) {
        progressBar.setVisibility(View.INVISIBLE);
        pleaseWaitTextView.setVisibility(View.INVISIBLE);
        TextView notFoundTextView = (TextView) findViewById(R.id.not_found_textview);
        notFoundTextView.setVisibility(View.VISIBLE);
    }

    //set default camera settings
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

    //restore the camera type settings
    String cameraTypeName = sharedPreferences.getString("cameraType",
            CameraDetector.CameraType.CAMERA_FRONT.name());
    if (cameraTypeName.equals(CameraDetector.CameraType.CAMERA_FRONT.name())) {
        cameraType = CameraDetector.CameraType.CAMERA_FRONT;
        mirrorPoints = true;
    } else {
        cameraType = CameraDetector.CameraType.CAMERA_BACK;
        mirrorPoints = false;
    }
}

From source file:com.aimfire.main.MainActivity.java

private void checkGyroscope() {
    PackageManager pm = getPackageManager();

    if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_GYROSCOPE)) {
        // warn the user
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this,
                R.style.AppCompatAlertDialogStyle);
        alertDialogBuilder.setTitle(R.string.warning);
        alertDialogBuilder.setMessage(R.string.warning_device_no_gyro);

        alertDialogBuilder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
            @Override/*from ww  w  .  ja v a 2  s. c  o  m*/
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    }
}

From source file:info.zamojski.soft.towercollector.MainActivity.java

private void displayNotCompatibleDialog() {
    // check if displayed in this app run
    if (showNotCompatibleDialog) {
        // check if not disabled in preferences
        boolean showCompatibilityWarningEnabled = MyApplication.getPreferencesProvider()
                .getShowCompatibilityWarning();
        if (showCompatibilityWarningEnabled) {
            TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
            // check if device contains telephony hardware (some tablets doesn't report even if have)
            // NOTE: in the future this may need to be expanded when new specific features appear
            PackageManager packageManager = getPackageManager();
            boolean noRadioDetected = !(packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
                    && (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_GSM)
                            || packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CDMA)));
            // show dialog if something is not supported
            if (noRadioDetected) {
                Log.d("displayNotCompatibleDialog(): Not compatible because of radio: %s, phone type: %s",
                        noRadioDetected, telephonyManager.getPhoneType());
                //use custom layout to show "don't show this again" checkbox
                AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
                LayoutInflater inflater = LayoutInflater.from(this);
                View dialogLayout = inflater.inflate(R.layout.dont_show_again_dialog, null);
                final CheckBox dontShowAgainCheckbox = (CheckBox) dialogLayout
                        .findViewById(R.id.dont_show_again_dialog_checkbox);
                dialogBuilder.setView(dialogLayout);
                AlertDialog alertDialog = dialogBuilder.create();
                alertDialog.setCanceledOnTouchOutside(true);
                alertDialog.setCancelable(true);
                alertDialog.setTitle(R.string.main_dialog_not_compatible_title);
                StringBuilder stringBuilder = new StringBuilder(
                        getString(R.string.main_dialog_not_compatible_begin));
                if (noRadioDetected) {
                    stringBuilder.append(getString(R.string.main_dialog_no_compatible_mobile_radio_message));
                }//from www. j  av  a 2 s  .c o  m
                // text set this way to prevent checkbox from disappearing when text is too long
                TextView messageTextView = (TextView) dialogLayout
                        .findViewById(R.id.dont_show_again_dialog_textview);
                messageTextView.setText(stringBuilder.toString());
                alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.dialog_ok),
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                boolean dontShowAgainCheckboxChecked = dontShowAgainCheckbox.isChecked();
                                Log.d("displayNotCompatibleDialog(): Don't show again checkbox checked = %s",
                                        dontShowAgainCheckboxChecked);
                                if (dontShowAgainCheckboxChecked) {
                                    MyApplication.getPreferencesProvider().setShowCompatibilityWarning(false);
                                }
                            }
                        });
                alertDialog.show();
            }
        }
        showNotCompatibleDialog = false;
    }
}

From source file:github.daneren2005.dsub.activity.SubsonicActivity.java

@Override
protected void onCreate(Bundle bundle) {
    UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE);
    if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
        // tv = true;
    }/*from   w w w .  j ava2s . com*/
    PackageManager pm = getPackageManager();
    if (!pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN)) {
        touchscreen = false;
    }

    setUncaughtExceptionHandler();
    applyTheme();
    applyFullscreen();
    super.onCreate(bundle);
    startService(new Intent(this, DownloadService.class));
    setVolumeControlStream(AudioManager.STREAM_MUSIC);

    if (getIntent().hasExtra(Constants.FRAGMENT_POSITION)) {
        lastSelectedPosition = getIntent().getIntExtra(Constants.FRAGMENT_POSITION, 0);
    }

    if (preferencesListener == null) {
        preferencesListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
            @Override
            public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
                // When changing drawer settings change visibility
                switch (key) {
                case Constants.PREFERENCES_KEY_PODCASTS_ENABLED:
                    setDrawerItemVisible(R.id.drawer_podcasts, false);
                    break;
                case Constants.PREFERENCES_KEY_BOOKMARKS_ENABLED:
                    setDrawerItemVisible(R.id.drawer_bookmarks, false);
                    break;
                case Constants.PREFERENCES_KEY_SHARED_ENABLED:
                    setDrawerItemVisible(R.id.drawer_shares, false);
                    break;
                case Constants.PREFERENCES_KEY_CHAT_ENABLED:
                    setDrawerItemVisible(R.id.drawer_chat, false);
                    break;
                case Constants.PREFERENCES_KEY_ADMIN_ENABLED:
                    setDrawerItemVisible(R.id.drawer_admin, false);
                    break;
                }
            }
        };
        Util.getPreferences(this).registerOnSharedPreferenceChangeListener(preferencesListener);
    }
}

From source file:cc.mintcoin.wallet.ui.SendCoinsFragment.java

@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
    inflater.inflate(R.menu.send_coins_fragment_options, menu);

    scanAction = menu.findItem(R.id.send_coins_options_scan);

    final PackageManager pm = activity.getPackageManager();
    scanAction.setVisible(pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)
            || pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT));

    super.onCreateOptionsMenu(menu, inflater);
}

From source file:com.bushstar.htmlcoin_android_wallet.ui.SendCoinsFragment.java

@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
    inflater.inflate(R.menu.send_coins_fragment_options, menu);

    scanAction = menu.findItem(R.id.send_coins_options_scan);
    emptyAction = menu.findItem(R.id.send_coins_options_empty);

    final PackageManager pm = activity.getPackageManager();
    scanAction.setVisible(pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)
            || pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT));

    super.onCreateOptionsMenu(menu, inflater);
}

From source file:org.hopestarter.wallet.ui.send.SendCoinsFragment.java

@Override
public void onPrepareOptionsMenu(final Menu menu) {
    final MenuItem scanAction = menu.findItem(R.id.send_coins_options_scan);
    final PackageManager pm = activity.getPackageManager();
    scanAction.setVisible(pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)
            || pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT));
    scanAction.setEnabled(state == State.INPUT);

    super.onPrepareOptionsMenu(menu);
}

From source file:org.cryptsecure.Utility.java

/**
 * Checks if a is camera available on the current device.
 * // w w w . j av  a 2 s.  co  m
 * @param context
 *            the context
 * @return true, if is camera available
 */
public static boolean isCameraAvailable(Context context) {
    PackageManager packageManager = context.getPackageManager();
    return (packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA));
}

From source file:github.popeen.dsub.activity.SubsonicActivity.java

@Override
protected void onCreate(Bundle bundle) {

    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
            SensorManager.SENSOR_DELAY_NORMAL);

    UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE);
    if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
        // tv = true;
    }//  w ww.  j a v  a 2 s  .co  m
    PackageManager pm = getPackageManager();
    if (!pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN)) {
        touchscreen = false;
    }

    setUncaughtExceptionHandler();
    applyTheme();
    applyFullscreen();
    super.onCreate(bundle);
    startService(new Intent(this, DownloadService.class));
    setVolumeControlStream(AudioManager.STREAM_MUSIC);

    if (getIntent().hasExtra(Constants.FRAGMENT_POSITION)) {
        lastSelectedPosition = getIntent().getIntExtra(Constants.FRAGMENT_POSITION, 0);
    }

    if (preferencesListener == null) {
        preferencesListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
            @Override
            public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
                // When changing drawer settings change visibility
                switch (key) {
                case Constants.PREFERENCES_KEY_PODCASTS_ENABLED:
                    setDrawerItemVisible(R.id.drawer_podcasts, false);
                    break;
                case Constants.PREFERENCES_KEY_BOOKMARKS_ENABLED:
                    setDrawerItemVisible(R.id.drawer_bookmarks, false);
                    break;
                case Constants.PREFERENCES_KEY_INTERNET_RADIO_ENABLED:
                    setDrawerItemVisible(R.id.drawer_internet_radio_stations, false);
                    break;
                case Constants.PREFERENCES_KEY_SHARED_ENABLED:
                    setDrawerItemVisible(R.id.drawer_shares, false);
                    break;
                case Constants.PREFERENCES_KEY_CHAT_ENABLED:
                    setDrawerItemVisible(R.id.drawer_chat, false);
                    break;
                case Constants.PREFERENCES_KEY_ADMIN_ENABLED:
                    setDrawerItemVisible(R.id.drawer_admin, false);
                    break;
                }
            }
        };
        Util.getPreferences(this).registerOnSharedPreferenceChangeListener(preferencesListener);
    }

    if (ContextCompat.checkSelfPermission(this,
            permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[] { permission.WRITE_EXTERNAL_STORAGE },
                PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);
    }
}

From source file:com.google.android.marvin.screenspeak.ScreenSpeakService.java

/**
 * Initializes the controllers, managers, and processors. This should only
 * be called once from {@link #onCreate}.
 */// www .  j ava  2 s. com
private void initializeInfrastructure() {
    // Initialize static instances that do not have dependencies.
    NodeSpeechRuleProcessor.initialize(this);

    final PackageManager packageManager = getPackageManager();
    final boolean deviceIsPhone = packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
    //TODO we still need it keep true for TV until TouchExplore and Accessibility focus is not
    //unpaired
    //mSupportsTouchScreen = packageManager.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN);

    // Only initialize telephony and call state for phones.
    if (deviceIsPhone) {
        mCallStateMonitor = new CallStateMonitor(this);
        mAccessibilityEventProcessor.setCallStateMonitor(mCallStateMonitor);
    }

    mCursorController = new CursorControllerApp(this);
    addEventListener(mCursorController);

    mFeedbackController = new FeedbackControllerApp(this);
    mFullScreenReadController = new FullScreenReadControllerApp(mFeedbackController, mCursorController, this);
    addEventListener(mFullScreenReadController);
    mSpeechController = new SpeechController(this, mFeedbackController);
    mShakeDetector = new ShakeDetector(mFullScreenReadController, this);

    mMenuManager = new MenuManagerWrapper();
    updateMenuManager(mSpeechController, mFeedbackController); // Sets mMenuManager

    mRingerModeAndScreenMonitor = new RingerModeAndScreenMonitor(mFeedbackController, mMenuManager,
            mShakeDetector, mSpeechController, this);
    mAccessibilityEventProcessor.setRingerModeAndScreenMonitor(mRingerModeAndScreenMonitor);

    mGestureController = new GestureControllerApp(this, mCursorController, mFeedbackController,
            mFullScreenReadController, mMenuManager);

    mSideTapManager = new SideTapManager(this, mGestureController);
    addEventListener(mSideTapManager);
    mFeedbackController.addHapticFeedbackListener(mSideTapManager);

    mTextCursorController = new TextCursorControllerApp();
    addEventListener(mTextCursorController);

    // Add event processors. These will process incoming AccessibilityEvents
    // in the order they are added.
    ProcessorEventQueue processorEventQueue = new ProcessorEventQueue(mSpeechController, this);
    processorEventQueue.setTestingListener(mAccessibilityEventProcessor.getTestingListener());
    mAccessibilityEventProcessor.setProcessorEventQueue(processorEventQueue);

    addEventListener(processorEventQueue);
    addEventListener(new ProcessorScrollPosition(mFullScreenReadController, mSpeechController, this));
    addEventListener(new ProcessorAccessibilityHints(this, mSpeechController, mCursorController));
    addEventListener(new ProcessorPhoneticLetters(this, mSpeechController));

    mProcessorFollowFocus = new ProcessorFocusAndSingleTap(mCursorController, mFeedbackController,
            mSpeechController, this);
    addEventListener(mProcessorFollowFocus);
    if (mCursorController != null) {
        mCursorController.addScrollListener(mProcessorFollowFocus);
    }

    mVolumeMonitor = new VolumeMonitor(mSpeechController, this);
    mBatteryMonitor = new BatteryMonitor(this, mSpeechController,
            (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE));

    if (Build.VERSION.SDK_INT >= PackageRemovalReceiver.MIN_API_LEVEL) {
        // TODO(KM): Move this into the custom label manager code
        mPackageReceiver = new PackageRemovalReceiver();
    }

    if (Build.VERSION.SDK_INT >= ProcessorGestureVibrator.MIN_API_LEVEL) {
        addEventListener(new ProcessorGestureVibrator(mFeedbackController));
    }

    addEventListener(new ProcessorWebContent(this));

    DimScreenControllerApp dimScreenController = new DimScreenControllerApp(this);
    mDimScreenController = dimScreenController;

    if (Build.VERSION.SDK_INT >= ProcessorVolumeStream.MIN_API_LEVEL) {
        ProcessorVolumeStream processorVolumeStream = new ProcessorVolumeStream(mFeedbackController,
                mCursorController, mDimScreenController, this);
        addEventListener(processorVolumeStream);
        mKeyEventListeners.add(processorVolumeStream);
    }

    if (Build.VERSION.SDK_INT >= CustomLabelManager.MIN_API_LEVEL) {
        mLabelManager = new CustomLabelManager(this);
    }

    if (Build.VERSION.SDK_INT >= KeyComboManager.MIN_API_LEVEL) {
        mKeyComboManager = new KeyComboManager(this);
        mKeyComboManager.addListener(mKeyComboListener);
        // Search mode should receive key combos immediately after the ScreenSpeakService.
        if (Build.VERSION.SDK_INT >= KeyboardSearchManager.MIN_API_LEVEL) {
            mKeyboardSearchManager = new KeyboardSearchManager(this, mLabelManager);
            mKeyEventListeners.add(mKeyboardSearchManager);
            addEventListener(mKeyboardSearchManager);
            mKeyComboManager.addListener(mKeyboardSearchManager);
        }
        mKeyComboManager.addListener(mCursorController);
        mKeyEventListeners.add(mKeyComboManager);
    }

    addEventListener(mSavedNode);

    mOrientationMonitor = new OrientationMonitor(mSpeechController, this);
    mOrientationMonitor.addOnOrientationChangedListener(dimScreenController);

    mAnalytics = new ScreenSpeakAnalytics(this);
}