/** * Gets an AudioRecord object using the current recording settings * * @param context Context which we are getting recorder for */ public static AudioRecord getRecorder(Context context) throws IllegalArgumentException { AudioRecord recorder = null; int sampleRate = PreferenceHelper.getSampleRate(context); int bufferSize = PreferenceHelper.getBufferSize(context); int bufferSizeAdjuster = PreferenceHelper.getBufferSizeAdjuster(context); int audioSource = AudioSource.MIC; Log.i( TAG_AUDIOHELPER, String.format( "AudioRecord initialized with saved configuration! sample rate: %d, buffer: %d, buffer adjuster: %d", sampleRate, bufferSize, bufferSizeAdjuster)); recorder = new AudioRecord( audioSource, sampleRate, Constants.DEFAULT_CHANNEL_CONFIG, Constants.DEFAULT_PCM_FORMAT, bufferSize * bufferSizeAdjuster); if (recorder.getState() != AudioRecord.STATE_INITIALIZED) { throw new IllegalArgumentException( String.format( "unable to initialize AudioRecord instance, sample rate: %d, channels: %d, buffer: %d", sampleRate, Constants.DEFAULT_CHANNEL_CONFIG, bufferSize)); } return recorder; }
/** * Gets an AudioTrack object using the current playback settings * * @param context Context which we are getting recorder for */ public static AudioTrack getPlayer(Context context) throws IllegalArgumentException { AudioTrack player = null; int sampleRate = PreferenceHelper.getSampleRate(context); int bufferSizeAdjuster = PreferenceHelper.getBufferSizeAdjuster(context); Log.i( TAG_AUDIOHELPER, String.format( "AudioTrack initialized with saved configuration! sample rate: %d, buffer adjuster: %d", sampleRate, bufferSizeAdjuster)); int bufferSize = AudioTrack.getMinBufferSize( sampleRate, Constants.DEFAULT_CHANNEL_CONFIG, Constants.DEFAULT_PCM_FORMAT) * bufferSizeAdjuster; player = new AudioTrack( AudioManager.STREAM_MUSIC, sampleRate, Constants.DEFAULT_CHANNEL_CONFIG, Constants.DEFAULT_PCM_FORMAT, bufferSize, AudioTrack.MODE_STREAM); if (player.getState() != AudioTrack.STATE_INITIALIZED) { throw new IllegalArgumentException( String.format( "unable to initialize AudioTrack instance, sample rate: %d, channels: %d, buffer: %d", sampleRate, Constants.DEFAULT_CHANNEL_CONFIG, bufferSize)); } return player; }
protected void restoreAndroidVersion() { if (!mPreferenceHelper.storesAndroidVersion()) { return; } String androidVersion = mPreferenceHelper.restoreAndroidVersion(); mAndroidVersionTextView.setText(androidVersion); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); PreferenceHelper.getInstance().init(getApplicationContext()); preferenceHelper = PreferenceHelper.getInstance(); fragmentManager = getFragmentManager(); runSplash(); setUI(); }
@Override public void onResume() { super.onResume(); int speaker_vol = PreferenceHelper.getSpeakerVolume(this); int headset_vol = PreferenceHelper.getHeadsetVolume(this); speaker_vol_slider.setProgress(speaker_vol); headset_vol_slider.setProgress(headset_vol); ((CheckedTextView) findViewById(R.id.enabled)).setChecked(PreferenceHelper.isEnabled(this)); ((CheckedTextView) findViewById(R.id.start_on_boot)) .setChecked(PreferenceHelper.isStartOnBootEnabled(this)); }
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); MenuItem splashItem = menu.findItem(R.id.action_splash); splashItem.setChecked(preferenceHelper.getBoolean(PreferenceHelper.SPLASH_IS_INVISIBLE)); return true; }
String getAuthName() { // lookup order is: // 1: Defined preference called "orion.auth.name" // 2: System property called "orion.tests.authtype" // 3: Default to Form+OpenID return PreferenceHelper.getString( ServerConstants.CONFIG_AUTH_NAME, System.getProperty("orion.tests.authtype", DEFAULT_AUTHENTICATION_NAME)); // $NON-NLS-1$ }
/** * Gets the buffer size needed for the current recorder settings This function wraps * AudioRecord.getMinBufferSize(SampleRate, ChannelConfig, PcmFormat) which means this function * can return AudioRecord.ERROR_BAD_VALUE for invalid settings or AudioRecord.ERROR when the * system is unable to query hardware for proper settings * * @param context Context which we are getting recorder information about */ public static int getRecorderBufferSize(Context context) { int bufferSize = 0; int sampleRate = PreferenceHelper.getSampleRate(context); if (sampleRate > 0) { bufferSize = AudioRecord.getMinBufferSize( sampleRate, Constants.DEFAULT_CHANNEL_CONFIG, Constants.DEFAULT_PCM_FORMAT); } return bufferSize; }
public void runSplash() { if (!preferenceHelper.getBoolean(PreferenceHelper.SPLASH_IS_INVISIBLE)) { SplashFragment splashFragment = new SplashFragment(); fragmentManager .beginTransaction() .replace(R.id.content_frame, splashFragment) .addToBackStack(null) .commit(); } }
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_splash) { item.setChecked(!item.isChecked()); preferenceHelper.putBoolean(PreferenceHelper.SPLASH_IS_INVISIBLE, item.isChecked()); return true; } return super.onOptionsItemSelected(item); }
/** * Returns the root location where user data files for the given user are stored. In some * configurations this location might be shared across users, so clients will need to ensure * resulting files are segmented appropriately by user. */ public static IFileStore getUserHome(String userId) { URI platformLocationURI = Activator.getDefault().getRootLocationURI(); IFileStore root = null; try { root = EFS.getStore(platformLocationURI); } catch (CoreException e) { // this is fatal, we can't access the platform instance location throw new Error("Failed to access platform instance location", e); // $NON-NLS-1$ } // consult layout preference String layout = PreferenceHelper.getString(ServerConstants.CONFIG_FILE_LAYOUT, "flat") .toLowerCase(); //$NON-NLS-1$ if ("usertree".equals(layout) && userId != null) { // $NON-NLS-1$ // the user-tree layout organises projects by the user who created it String userPrefix = userId.substring(0, Math.min(2, userId.length())); return root.getChild(userPrefix).getChild(userId); } // default layout is a flat list of projects at the root return root; }
/** * Attempts to autoconfigure current Context's sample rate, buffer size, or buffer size adjuster . * Will show a pop-up warning if configuration failed to initialize an AudioRecord instance. * * @param context Context which we are attempting to configure */ public static void configureRecorder(Context context) { AudioRecord rec = null; int sampleRate = PreferenceHelper.getSampleRate(context); int bufferSize = PreferenceHelper.getBufferSize(context); int bufferSizeAdjuster = PreferenceHelper.getBufferSizeAdjuster(context); if (sampleRate < 0 || bufferSize < 0 || bufferSizeAdjuster < 0) { if (AudioHelper.isSamsungGalaxyS()) { // bypass checking, go with defaults bufferSize = 6144; bufferSizeAdjuster = 1; sampleRate = Constants.SAMPLE_RATE_22KHZ; Log.i( TAG_AUDIOHELPER, String.format( "AudioRecord initially configured! sample rate: %d, buffer size: %d, buffer size adjuster: %d", sampleRate, bufferSize, bufferSizeAdjuster)); PreferenceHelper.setSampleRate(context, sampleRate); PreferenceHelper.setBufferSize(context, bufferSize); PreferenceHelper.setBufferSizeAdjuster(context, bufferSizeAdjuster); return; } if (bufferSizeAdjuster < 1) { // clamp buffer size adjuster to minimum of 1 bufferSizeAdjuster = 1; } // try a new sample rates until we find one that works do { switch (sampleRate) { case -1: // set the default to 22050Hz, so slower devices perform // better sampleRate = Constants.SAMPLE_RATE_22KHZ; break; case Constants.SAMPLE_RATE_44KHZ: sampleRate = Constants.SAMPLE_RATE_22KHZ; break; case Constants.SAMPLE_RATE_22KHZ: sampleRate = Constants.SAMPLE_RATE_11KHZ; break; case Constants.SAMPLE_RATE_11KHZ: sampleRate = Constants.SAMPLE_RATE_8KHZ; break; default: // start the loop over again with a larger buffer size bufferSizeAdjuster *= 2; sampleRate = Constants.SAMPLE_RATE_22KHZ; } bufferSize = AudioRecord.getMinBufferSize( sampleRate, Constants.DEFAULT_CHANNEL_CONFIG, Constants.DEFAULT_PCM_FORMAT); if (bufferSize != AudioRecord.ERROR && bufferSize != AudioRecord.ERROR_BAD_VALUE) { if (bufferSize <= 4096) { bufferSize = 4096 * 3 / 2; } rec = new AudioRecord( AudioSource.MIC, sampleRate, Constants.DEFAULT_CHANNEL_CONFIG, Constants.DEFAULT_PCM_FORMAT, bufferSize * bufferSizeAdjuster); if (rec != null && rec.getState() == AudioRecord.STATE_INITIALIZED) { rec.release(); rec = null; Log.i( TAG_AUDIOHELPER, String.format( "AudioRecord initially configured! sample rate: %d, buffer size: %d, buffer size adjuster: %d", sampleRate, bufferSize, bufferSizeAdjuster)); PreferenceHelper.setSampleRate(context, sampleRate); PreferenceHelper.setBufferSize(context, bufferSize); PreferenceHelper.setBufferSizeAdjuster(context, bufferSizeAdjuster); return; } if (rec != null) { rec.release(); rec = null; } } } while (bufferSizeAdjuster < Constants.DEFAULT_BUFFER_LIMIT); // failure to configure! DialogHelper.showWarning( context, R.string.unable_to_configure_audio_title, R.string.unable_to_configure_audio_warning); } }
private void initSingletons() { PreferenceHelper.initInstance(getApplicationContext()); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); audio_manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); PreferenceHelper.doFirstRunSetup(this); if (PreferenceHelper.isEnabled(this)) { startService(new Intent(this, VolumeMiserService.class)); } final CheckedTextView enabled_view = (CheckedTextView) findViewById(R.id.enabled); enabled_view.setOnClickListener( new OnClickListener() { public void onClick(View v) { enabled_view.toggle(); if (!enabled_view.isChecked()) { stopService(new Intent(VolumeMiserActivity.this, VolumeMiserService.class)); } else { startService(new Intent(VolumeMiserActivity.this, VolumeMiserService.class)); } PreferenceHelper.setEnabled(VolumeMiserActivity.this, enabled_view.isChecked()); } }); final CheckedTextView start_on_boot_view = (CheckedTextView) findViewById(R.id.start_on_boot); start_on_boot_view.setOnClickListener( new OnClickListener() { public void onClick(View v) { start_on_boot_view.toggle(); PreferenceHelper.setBootOnStartup( VolumeMiserActivity.this, start_on_boot_view.isChecked()); } }); speaker_vol_slider = (SeekBar) findViewById(R.id.speaker_volume_bar); speaker_vol_slider.setMax(audio_manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)); speaker_vol_slider.setOnSeekBarChangeListener( new OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int value, boolean fromUser) { if (!fromUser) { return; } PreferenceHelper.setSpeakerVolumePref(VolumeMiserActivity.this, value); } public void onStartTrackingTouch(SeekBar arg0) {} public void onStopTrackingTouch(SeekBar arg0) {} }); headset_vol_slider = (SeekBar) findViewById(R.id.headset_volume_bar); headset_vol_slider.setMax(audio_manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)); headset_vol_slider.setOnSeekBarChangeListener( new OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int value, boolean fromUser) { if (!fromUser) { return; } PreferenceHelper.setHeadsetVolumePref(VolumeMiserActivity.this, value); } public void onStartTrackingTouch(SeekBar arg0) {} public void onStopTrackingTouch(SeekBar arg0) {} }); ((TextView) findViewById(R.id.my_credit)).setMovementMethod(LinkMovementMethod.getInstance()); ((TextView) findViewById(R.id.footer)).setMovementMethod(LinkMovementMethod.getInstance()); }
protected void storeAndroidVersion() { final String androidVersion = mAndroidVersionEditText.getText().toString(); mPreferenceHelper.storeAndroidVersion(androidVersion); }