Skip to content

Commit de1b070

Browse files
committed
Merge pull request Catrobat#143 from Catrobat/RefactorSoundRecorder
Refactor SoundRecorder merged and accepted
2 parents 8fa62d3 + 601ca61 commit de1b070

File tree

6 files changed

+54
-45
lines changed

6 files changed

+54
-45
lines changed

catroid/AndroidManifest.xml

+1
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
<activity
115115
android:name=".soundrecorder.SoundRecorderActivity"
116116
android:exported="false"
117+
android:screenOrientation="portrait"
117118
android:label="@string/soundrecorder_name"
118119
android:theme="@style/Theme.Catroid" >
119120
<intent-filter>

catroid/res/layout/activity_soundrecorder.xml

+8-18
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
* GNU Affero General Public License for more details.
2020
*
2121
* You should have received a copy of the GNU Affero General Public License
22-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
23-
-->
22+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
23+
-->
2424
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
25-
android:id="@+id/SoundrecorderActivityRoot"
25+
android:id="@+id/soundrecorder"
2626
android:layout_width="match_parent"
2727
android:layout_height="match_parent"
2828
android:background="@android:color/white"
@@ -38,26 +38,26 @@
3838
android:textColor="@color/dark_gray" />
3939

4040
<ImageView
41-
android:id="@+id/recordButton"
41+
android:id="@+id/soundrecorder_imageview_record"
4242
android:layout_width="wrap_content"
4343
android:layout_height="80dip"
4444
android:layout_gravity="center_horizontal"
4545
android:background="@android:color/transparent"
4646
android:src="@drawable/ic_record_inactive" />
4747

4848
<TextView
49-
android:id="@+id/recording"
49+
android:id="@+id/soundrecorder_textview_recording_hint"
5050
android:layout_width="match_parent"
5151
android:layout_height="wrap_content"
5252
android:gravity="center"
5353
android:paddingTop="30dip"
5454
android:text="@string/soundrecorder_recording"
5555
android:textColor="#000000"
56-
android:textSize="25dip"
56+
android:textSize="25sp"
5757
android:visibility="invisible" />
5858

5959
<LinearLayout
60-
android:id="@+id/recordLayout"
60+
android:id="@+id/soundrecorder_linearlayout_record"
6161
android:layout_width="fill_parent"
6262
android:layout_height="wrap_content"
6363
android:layout_gravity="center_horizontal"
@@ -71,7 +71,7 @@
7171
android:shadowRadius="4" >
7272

7373
<TextView
74-
android:id="@+id/recordText"
74+
android:id="@+id/soundrecorder_textview_record_start_stop"
7575
android:layout_width="wrap_content"
7676
android:layout_height="wrap_content"
7777
android:layout_gravity="center_vertical"
@@ -80,14 +80,4 @@
8080
android:textStyle="bold" />
8181
</LinearLayout>
8282

83-
<!--
84-
<Button
85-
android:id="@+id/buttonRecord"
86-
android:layout_width="wrap_content"
87-
android:layout_height="wrap_content"
88-
android:layout_gravity="center"
89-
android:drawableLeft="@drawable/ic_record_inactive_button"
90-
android:text="@string/soundrecorder_record_start" />
91-
-->
92-
9383
</LinearLayout>

catroid/src/org/catrobat/catroid/soundrecorder/SoundRecorderActivity.java

+7-18
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import java.io.IOException;
2626

27+
import org.catrobat.catroid.R;
2728
import org.catrobat.catroid.common.Constants;
2829
import org.catrobat.catroid.utils.Utils;
2930

@@ -40,7 +41,6 @@
4041
import android.widget.LinearLayout;
4142
import android.widget.TextView;
4243
import android.widget.Toast;
43-
import org.catrobat.catroid.R;
4444

4545
import com.actionbarsherlock.app.SherlockFragmentActivity;
4646

@@ -59,18 +59,12 @@ public void onCreate(Bundle savedInstanceState) {
5959

6060
setContentView(R.layout.activity_soundrecorder);
6161

62-
recordLayout = (LinearLayout) findViewById(R.id.recordLayout);
63-
recordButton = (ImageView) findViewById(R.id.recordButton);
64-
recordText = (TextView) findViewById(R.id.recordText);
65-
recordingIndicationText = (TextView) findViewById(R.id.recording);
62+
recordLayout = (LinearLayout) findViewById(R.id.soundrecorder_linearlayout_record);
63+
recordButton = (ImageView) findViewById(R.id.soundrecorder_imageview_record);
64+
recordText = (TextView) findViewById(R.id.soundrecorder_textview_record_start_stop);
65+
recordingIndicationText = (TextView) findViewById(R.id.soundrecorder_textview_recording_hint);
6666

6767
recordLayout.setOnClickListener(this);
68-
69-
soundRecorder = (SoundRecorder) getLastCustomNonConfigurationInstance();
70-
if (soundRecorder != null && soundRecorder.isRecording()) {
71-
setViewsToRecordingState();
72-
}
73-
7468
Utils.checkForExternalStorageAvailableAndDisplayErrorIfNot(this);
7569
}
7670

@@ -81,7 +75,7 @@ public void onCreate(Bundle savedInstanceState) {
8175
protected void onDestroy() {
8276
super.onDestroy();
8377

84-
unbindDrawables(findViewById(R.id.SoundrecorderActivityRoot));
78+
unbindDrawables(findViewById(R.id.soundrecorder));
8579
System.gc();
8680
}
8781

@@ -99,7 +93,7 @@ private void unbindDrawables(View view) {
9993

10094
@Override
10195
public void onClick(View v) {
102-
if (v.getId() == R.id.recordLayout) {
96+
if (v.getId() == R.id.soundrecorder_linearlayout_record) {
10397
if (soundRecorder != null && soundRecorder.isRecording()) {
10498
stopRecording();
10599
finish();
@@ -115,11 +109,6 @@ public void onBackPressed() {
115109
super.onBackPressed();
116110
}
117111

118-
@Override
119-
public Object onRetainCustomNonConfigurationInstance() {
120-
return soundRecorder;
121-
}
122-
123112
private synchronized void startRecording() {
124113
if (soundRecorder != null && soundRecorder.isRecording()) {
125114
return;

catroidUiTest/src/org/catrobat/catroid/uitest/ui/ProgramMenuActivityTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public void testOrientation() throws NameNotFoundException {
8484
createProject();
8585
solo.clickOnButton(solo.getString(R.string.main_menu_continue));
8686
solo.clickOnText("Background");
87+
solo.waitForActivity(ProgramMenuActivity.class.getSimpleName());
8788
assertEquals("ProgramMenuActivity not in Portrait mode!", Configuration.ORIENTATION_PORTRAIT, solo
8889
.getCurrentActivity().getResources().getConfiguration().orientation);
8990

@@ -96,6 +97,7 @@ public void testOrientation() throws NameNotFoundException {
9697
// Note that the activity is _indeed_ rotated on your device/emulator!
9798
// Robotium can _force_ the activity to be in landscape mode (and so could we, programmatically)
9899
solo.setActivityOrientation(Solo.LANDSCAPE);
100+
solo.sleep(200);
99101

100102
assertEquals(ProgramMenuActivity.class.getSimpleName()
101103
+ " not set to be in portrait mode in AndroidManifest.xml!", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,

catroidUiTest/src/org/catrobat/catroid/uitest/ui/ProjectActivityTest.java

+2
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ public void testAddedSpriteVisibleOnLongList() {
162162
public void testOrientation() throws NameNotFoundException {
163163
/// Method 1: Assert it is currently in portrait mode.
164164
solo.clickOnButton(solo.getString(R.string.main_menu_continue));
165+
solo.waitForActivity(ProjectActivity.class.getSimpleName());
165166
assertEquals("ProjectActivity not in Portrait mode!", Configuration.ORIENTATION_PORTRAIT, solo
166167
.getCurrentActivity().getResources().getConfiguration().orientation);
167168

@@ -174,6 +175,7 @@ public void testOrientation() throws NameNotFoundException {
174175
// Note that the activity is _indeed_ rotated on your device/emulator!
175176
// Robotium can _force_ the activity to be in landscape mode (and so could we, programmatically)
176177
solo.setActivityOrientation(Solo.LANDSCAPE);
178+
solo.sleep(200);
177179

178180
assertEquals(ProjectActivity.class.getSimpleName() + " not set to be in portrait mode in AndroidManifest.xml!",
179181
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT, activityInfo.screenOrientation);

catroidUiTest/src/org/catrobat/catroid/uitest/ui/SoundRecorderTest.java

+34-9
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,29 @@
2626
import java.util.ArrayList;
2727

2828
import org.catrobat.catroid.ProjectManager;
29+
import org.catrobat.catroid.R;
2930
import org.catrobat.catroid.common.Constants;
3031
import org.catrobat.catroid.common.SoundInfo;
3132
import org.catrobat.catroid.soundrecorder.SoundRecorderActivity;
33+
import org.catrobat.catroid.ui.MainMenuActivity;
3234
import org.catrobat.catroid.ui.ScriptTabActivity;
3335
import org.catrobat.catroid.uitest.util.UiTestUtils;
3436
import org.catrobat.catroid.utils.Utils;
3537

38+
import android.content.pm.ActivityInfo;
39+
import android.content.pm.PackageManager;
40+
import android.content.pm.PackageManager.NameNotFoundException;
41+
import android.content.res.Configuration;
3642
import android.test.ActivityInstrumentationTestCase2;
37-
import org.catrobat.catroid.R;
3843

3944
import com.jayway.android.robotium.solo.Solo;
4045

41-
public class SoundRecorderTest extends ActivityInstrumentationTestCase2<ScriptTabActivity> {
46+
public class SoundRecorderTest extends ActivityInstrumentationTestCase2<MainMenuActivity> {
4247

4348
private Solo solo;
4449

4550
public SoundRecorderTest() {
46-
super(ScriptTabActivity.class);
51+
super(MainMenuActivity.class);
4752
}
4853

4954
@Override
@@ -53,6 +58,7 @@ public void setUp() throws Exception {
5358
UiTestUtils.createTestProject();
5459

5560
solo = new Solo(getInstrumentation(), getActivity());
61+
UiTestUtils.getIntoScriptTabActivityFromMainMenu(solo);
5662
}
5763

5864
@Override
@@ -64,6 +70,29 @@ public void tearDown() throws Exception {
6470
solo = null;
6571
}
6672

73+
public void testOrientation() throws NameNotFoundException {
74+
prepareRecording();
75+
solo.waitForActivity(SoundRecorderActivity.class.getSimpleName());
76+
/// Method 1: Assert it is currently in portrait mode.
77+
assertEquals("SoundRecorderActivity not in Portrait mode!", Configuration.ORIENTATION_PORTRAIT, solo
78+
.getCurrentActivity().getResources().getConfiguration().orientation);
79+
80+
/// Method 2: Retreive info about Activity as collected from AndroidManifest.xml
81+
// https://developer.android.com/reference/android/content/pm/ActivityInfo.html
82+
PackageManager packageManager = solo.getCurrentActivity().getPackageManager();
83+
ActivityInfo activityInfo = packageManager.getActivityInfo(solo.getCurrentActivity().getComponentName(),
84+
PackageManager.GET_ACTIVITIES);
85+
86+
// Note that the activity is _indeed_ rotated on your device/emulator!
87+
// Robotium can _force_ the activity to be in landscape mode (and so could we, programmatically)
88+
solo.setActivityOrientation(Solo.LANDSCAPE);
89+
solo.sleep(200);
90+
91+
assertEquals(SoundRecorderActivity.class.getSimpleName()
92+
+ " not set to be in portrait mode in AndroidManifest.xml!", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,
93+
activityInfo.screenOrientation);
94+
}
95+
6796
public void testRecordMultipleSounds() throws InterruptedException {
6897
prepareRecording();
6998
recordSoundWithChangingOrientation();
@@ -77,22 +106,18 @@ public void testRecordMultipleSounds() throws InterruptedException {
77106
public void recordSoundWithChangingOrientation() throws InterruptedException {
78107
solo.waitForActivity(SoundRecorderActivity.class.getSimpleName());
79108
solo.clickOnText(solo.getString(R.string.soundrecorder_record_start));
80-
solo.setActivityOrientation(Solo.LANDSCAPE);
81-
solo.setActivityOrientation(Solo.PORTRAIT);
109+
solo.sleep(500);
82110
solo.clickOnText(solo.getString(R.string.soundrecorder_record_stop));
83111
}
84112

85113
public void recordSoundGoBackWhileRecording() throws InterruptedException {
86114
solo.waitForActivity(SoundRecorderActivity.class.getSimpleName());
87115
solo.clickOnText(solo.getString(R.string.soundrecorder_record_start));
88-
solo.setActivityOrientation(Solo.LANDSCAPE);
89-
116+
solo.sleep(500);
90117
solo.goBack();
91-
solo.setActivityOrientation(Solo.PORTRAIT);
92118
}
93119

94120
private void prepareRecording() {
95-
solo.setActivityOrientation(Solo.PORTRAIT);
96121
solo.clickOnText(solo.getString(R.string.sounds));
97122

98123
UiTestUtils.clickOnActionBar(solo, R.id.menu_add);

0 commit comments

Comments
 (0)