diff options
author | jrizzoli <joey@cyanogenmoditalia.it> | 2016-01-31 20:32:02 +0100 |
---|---|---|
committer | Michael Bestas <mikeioannina@cyanogenmod.org> | 2016-04-16 22:21:27 +0300 |
commit | 828959ec14e6670377cfd49cc33f348f5bf3cfdb (patch) | |
tree | a97a43c864ecd9b6db61955955b0e779808bd379 /src | |
parent | f5a3cb0fd37e6ac6850b4fc0a10e0fa2e3d18347 (diff) | |
download | android_packages_apps_Screencast-828959ec14e6670377cfd49cc33f348f5bf3cfdb.tar.gz android_packages_apps_Screencast-828959ec14e6670377cfd49cc33f348f5bf3cfdb.tar.bz2 android_packages_apps_Screencast-828959ec14e6670377cfd49cc33f348f5bf3cfdb.zip |
Screencast: material makeover
Change-Id: I11a3eafd2c2d67b7e263e559637aee8bc8ddb4b3
Signed-off-by: jrizzoli <joey@cyanogenmoditalia.it>
Diffstat (limited to 'src')
-rw-r--r-- | src/org/cyanogenmod/screencast/MainActivity.java | 165 | ||||
-rw-r--r-- | src/org/cyanogenmod/screencast/RecordingDevice.java | 2 | ||||
-rw-r--r-- | src/org/cyanogenmod/screencast/ScreencastService.java | 10 |
3 files changed, 91 insertions, 86 deletions
diff --git a/src/org/cyanogenmod/screencast/MainActivity.java b/src/org/cyanogenmod/screencast/MainActivity.java index 63f1c68..a61ee11 100644 --- a/src/org/cyanogenmod/screencast/MainActivity.java +++ b/src/org/cyanogenmod/screencast/MainActivity.java @@ -17,6 +17,7 @@ package org.cyanogenmod.screencast; import android.Manifest; +import android.animation.Animator; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; @@ -24,88 +25,65 @@ import android.net.Uri; import android.os.Bundle; import android.provider.Settings; import android.view.View; -import android.widget.Button; +import android.view.ViewAnimationUtils; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.CheckBox; +import android.widget.ImageButton; import android.widget.TextView; public class MainActivity extends Activity { - Button mStartScreencastButton; - Button mStopScreencastButton; - Button mSettingsButton; - TextView mStartDescription; - View mNoAudioWarning; - - boolean mHasAudioPermission = false; - + private ImageButton mScreencastButton; + private TextView mText; + private TextView mAudioText; + private boolean mHasAudioPermission; private static final int REQUEST_AUDIO_PERMS = 654; - private boolean hasPermissions() { - int res = checkCallingOrSelfPermission(Manifest.permission.RECORD_AUDIO); - return (res == PackageManager.PERMISSION_GRANTED); - } - - private void requestNecessaryPermissions() { - String[] permissions = new String[] { - Manifest.permission.RECORD_AUDIO, - }; - requestPermissions(permissions, REQUEST_AUDIO_PERMS); - } - - @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, - int[] grantResults) { - if (requestCode == REQUEST_AUDIO_PERMS) { - mHasAudioPermission = true; - for (int res : grantResults) { - mHasAudioPermission &= (res == PackageManager.PERMISSION_GRANTED); - } - refreshState(); - } - } - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); - if (!hasPermissions()) { - requestNecessaryPermissions(); - } else { - mHasAudioPermission = true; - } + mScreencastButton = (ImageButton) findViewById(R.id.screencast); + mText = (TextView) findViewById(R.id.hint); + mAudioText = (TextView) findViewById(R.id.audio_warning); - mStartDescription = (TextView) findViewById(R.id.start_description); - mNoAudioWarning = findViewById(R.id.no_audio_warning); - - mStartScreencastButton = (Button) findViewById(R.id.start_screencast); - mStartScreencastButton.setOnClickListener(new View.OnClickListener() { + mScreencastButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - getSharedPreferences(ScreencastService.PREFS, 0).edit().putBoolean(ScreencastService.KEY_RECORDING, true).apply(); - startService(new Intent("org.cyanogenmod.ACTION_START_SCREENCAST") - .setClass(MainActivity.this, ScreencastService.class)); - finish(); + animateFAB(v); + if (getSharedPreferences(ScreencastService.PREFS, 0) + .getBoolean(ScreencastService.KEY_RECORDING, false)) { + // stop + getSharedPreferences(ScreencastService.PREFS, 0) + .edit() + .putBoolean(ScreencastService.KEY_RECORDING, false) + .apply(); + startService(new Intent("org.cyanogenmod.ACTION_STOP_SCREENCAST") + .setClass(MainActivity.this, ScreencastService.class)); + refreshState(); + } else { + // record + getSharedPreferences(ScreencastService.PREFS, 0) + .edit() + .putBoolean(ScreencastService.KEY_RECORDING, true) + .apply(); + startService(new Intent("org.cyanogenmod.ACTION_START_SCREENCAST") + .setClass(MainActivity.this, ScreencastService.class)); + finish(); + } } }); - mStopScreencastButton = (Button) findViewById(R.id.stop_screencast); - mStopScreencastButton.setOnClickListener(new View.OnClickListener() { + mAudioText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - getSharedPreferences(ScreencastService.PREFS, 0).edit().putBoolean(ScreencastService.KEY_RECORDING, false).apply(); - startService(new Intent("org.cyanogenmod.ACTION_STOP_SCREENCAST") - .setClass(MainActivity.this, ScreencastService.class)); - refreshState(); + requestNecessaryPermissions(); } }); - mSettingsButton = (Button) findViewById(R.id.settings); - mSettingsButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - goToSettings(); - } - }); + refreshState(); } @Override @@ -121,29 +99,41 @@ public class MainActivity extends Activity { refreshState(); } - private void refreshState() { - final boolean recording = getSharedPreferences(ScreencastService.PREFS, 0).getBoolean(ScreencastService.KEY_RECORDING, false); - if (mStartScreencastButton != null) { - mStartScreencastButton.setEnabled(!recording); - } - if (mStopScreencastButton != null) { - mStopScreencastButton.setEnabled(recording); - } + private boolean hasPermissions() { + int res = checkSelfPermission(Manifest.permission.RECORD_AUDIO); + return (res == PackageManager.PERMISSION_GRANTED); + } - int visibility = mHasAudioPermission ? View.GONE : View.VISIBLE; - if (mSettingsButton != null) { - mSettingsButton.setVisibility(visibility); - } - if (mNoAudioWarning != null) { - mNoAudioWarning.setVisibility(visibility); + private void requestNecessaryPermissions() { + String[] permissions = new String[] { + Manifest.permission.RECORD_AUDIO, + }; + requestPermissions(permissions, REQUEST_AUDIO_PERMS); + } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, + int[] grantResults) { + if (requestCode == REQUEST_AUDIO_PERMS) { + for (int res : grantResults) { + mHasAudioPermission &= (res == PackageManager.PERMISSION_GRANTED); + } + refreshState(); } + } - if (mStartDescription != null) { - mStartDescription.setText( - mHasAudioPermission - ? R.string.start_description - : R.string.start_description_no_audio - ); + private void refreshState() { + final boolean recording = getSharedPreferences(ScreencastService.PREFS, 0) + .getBoolean(ScreencastService.KEY_RECORDING, false); + if (recording) { + mScreencastButton.setImageResource(R.drawable.stop); + mText.setText(R.string.stop_description); + mAudioText.setVisibility(View.GONE); + } else { + mScreencastButton.setImageResource(R.drawable.record); + mText.setText(mHasAudioPermission ? + R.string.start_description : R.string.start_description_no_audio); + mAudioText.setVisibility(mHasAudioPermission ? View.GONE: View.VISIBLE); } } @@ -156,4 +146,17 @@ public class MainActivity extends Activity { intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); startActivity(intent); } -}
\ No newline at end of file + + private void animateFAB(View view) { + int centerX = (view.getLeft() + view.getRight()) / 2; + int centerY = (view.getTop() + view.getBottom()) / 2; + int startRadius = 0; + int endRadius = (int) Math.hypot(view.getWidth(), view.getHeight()); + + Animator anim = ViewAnimationUtils.createCircularReveal( + view, centerX, centerY, startRadius, endRadius); + + anim.setDuration(800); + anim.start(); + } +} diff --git a/src/org/cyanogenmod/screencast/RecordingDevice.java b/src/org/cyanogenmod/screencast/RecordingDevice.java index 4806890..c6fe471 100644 --- a/src/org/cyanogenmod/screencast/RecordingDevice.java +++ b/src/org/cyanogenmod/screencast/RecordingDevice.java @@ -17,6 +17,7 @@ package org.cyanogenmod.screencast; import android.content.Context; +import android.content.SharedPreferences; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaCodec; @@ -40,6 +41,7 @@ class RecordingDevice extends EncoderDevice { private static final String LOGTAG = "RecordingDevice"; private static final File RECORDINGS_DIR = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES), "Screencasts"); File path; + public boolean shouldRecordAudio; public RecordingDevice(Context context, int width, int height) { super(context, width, height); diff --git a/src/org/cyanogenmod/screencast/ScreencastService.java b/src/org/cyanogenmod/screencast/ScreencastService.java index 2fc8d7b..1f37ac3 100644 --- a/src/org/cyanogenmod/screencast/ScreencastService.java +++ b/src/org/cyanogenmod/screencast/ScreencastService.java @@ -233,14 +233,14 @@ public class ScreencastService extends Service { if (showingTouches) { Settings.System.putInt(getContentResolver(), SHOW_TOUCHES, 1); showTouchesIntent.putExtra(SHOW_TOUCHES, "off"); - mBuilder.addAction(R.drawable.ic_stat_rating_important, - getString(R.string.show_touches), + mBuilder.addAction(R.drawable.ic_touch_off, + getString(R.string.hide_touches), PendingIntent.getService(this, 0, showTouchesIntent, PendingIntent.FLAG_UPDATE_CURRENT)); } else { Settings.System.putInt(getContentResolver(), SHOW_TOUCHES, 0); showTouchesIntent.putExtra(SHOW_TOUCHES, "on"); - mBuilder.addAction(R.drawable.ic_stat_rating_not_important, + mBuilder.addAction(R.drawable.ic_touch, getString(R.string.show_touches), PendingIntent.getService(this, 0, showTouchesIntent, PendingIntent.FLAG_UPDATE_CURRENT)); @@ -254,7 +254,7 @@ public class ScreencastService extends Service { .setContentTitle(getString(R.string.recording)); Intent stopRecording = new Intent(ACTION_STOP_SCREENCAST); stopRecording.setClass(this, ScreencastService.class); - builder.addAction(R.drawable.stop, getString(R.string.stop), + builder.addAction(R.drawable.ic_stop, getString(R.string.stop), PendingIntent.getService(this, 0, stopRecording, 0)); return builder; } @@ -291,7 +291,7 @@ public class ScreencastService extends Service { .setContentTitle(getString(R.string.recording_ready_to_share)) .setContentText(getString(R.string.video_length, DateUtils.formatElapsedTime(timeElapsed / 1000))) - .addAction(android.R.drawable.ic_menu_share, getString(R.string.share), + .addAction(R.drawable.ic_share, getString(R.string.share), PendingIntent.getActivity(this, 0, chooserIntent, PendingIntent.FLAG_CANCEL_CURRENT)) .setContentIntent(contentIntent); return builder; |