summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorjrizzoli <joey@cyanogenmoditalia.it>2016-01-31 20:32:02 +0100
committerMichael Bestas <mikeioannina@cyanogenmod.org>2016-04-16 22:21:27 +0300
commit828959ec14e6670377cfd49cc33f348f5bf3cfdb (patch)
treea97a43c864ecd9b6db61955955b0e779808bd379 /src
parentf5a3cb0fd37e6ac6850b4fc0a10e0fa2e3d18347 (diff)
downloadandroid_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.java165
-rw-r--r--src/org/cyanogenmod/screencast/RecordingDevice.java2
-rw-r--r--src/org/cyanogenmod/screencast/ScreencastService.java10
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;