このアプリはまだ完成していませんが、自分の携帯電話でどのように表示されるか見てみたいと思っていました。ただし、InstantiationException で強制終了します。
logcat の例外:
09-19 20:13:47.987: D/szipinf(5396): 膨張状態の初期化D/AndroidRuntime(5396): VM をシャットダウンしています 09-19 20:13:48.007: W/dalvikvm(5396): threadid=1: キャッチされない例外で終了するスレッド (group=0x4001d560) 09-19 20:13:48.017: E /AndroidRuntime(5396): 致命的な例外: main 09-19 20:13:48.017: E/AndroidRuntime(5396): java.lang.RuntimeException: アクティビティ ComponentInfo をインスタンス化できません {com.hyperspacemg.showstopper/com.hyperspacemg.showstopper. MainActivity}: java.lang.InstantiationException: com.hyperspacemg.showstopper.MainActivity 09-19 20:13:48.017: E/AndroidRuntime(5396): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1680) 09-19 で20:13:48.017: E/AndroidRuntime(5396): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 09-19 20:13:48.017: E/AndroidRuntime(5396): android.app.ActivityThread.access$1500(ActivityThread.java:123) 09-19 20:13:48.017: E /AndroidRuntime(5396): android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 09-19 20:13:48.017: E/AndroidRuntime(5396): android.os.Handler.dispatchMessage(Handler. java:99) 09-19 20:13:48.017: E/AndroidRuntime(5396): android.os.Looper.loop(Looper.java:130) 09-19 20:13:48.017: E/AndroidRuntime(5396) : android.app.ActivityThread.main(ActivityThread.java:3835) 09-19 20:13:48.017: E/AndroidRuntime(5396): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 09-19 20 :13:48.017: E/AndroidRuntime(5396): java.lang.reflect.Method.invoke(Method.java:507) 09-19 20:13:48.017: E/AndroidRuntime(5396):com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864) 09-19 20:13:48.017: E/AndroidRuntime(5396): com.android.internal.os.ZygoteInit.main( ZygoteInit.java:622) 09-19 20:13:48.017: E/AndroidRuntime(5396): dalvik.system.NativeStart.main(ネイティブ メソッド) 09-19 20:13:48.017: E/AndroidRuntime(5396):原因: java.lang.InstantiationException: com.hyperspacemg.showstopper.MainActivity 09-19 20:13:48.017: E/AndroidRuntime(5396): at java.lang.Class.newInstanceImpl(Native Method) 09-19 20:13 :48.017: E/AndroidRuntime(5396): java.lang.Class.newInstance(Class.java:1409) 09-19 20:13:48.017: E/AndroidRuntime(5396): android.app.Instrumentation.newActivity( Instrumentation.java:1021) 09-19 20:13:48.017: E/AndroidRuntime(5396): android.app.ActivityThread で。performLaunchActivity(ActivityThread.java:1672) 09-19 20:13:48.017: E/AndroidRuntime(5396): ... 11 09-19 20:13:48.017: W/ActivityManager(1426): 強制終了アクティビティ com. hyperspacemg.showstopper/.MainActivity 09-19 20:13:48.177: D/dalvikvm(1426): GC_EXTERNAL_ALLOC 解放 311K、42% 解放 6658K/11335K、外部 2060K/2067K、一時停止 73ms 09-19 20:13:48.237: D /dalvikvm(5379): GC_CONCURRENT 解放 346K、48% 空き 3158K/6023K、外部 0K/0K、一時停止 18ms+3ms 09-19 20:13:48.378: I/dalvikvm(5355): JIT の合計アリーナ ページ: 11 09 -19 20:13:48.518: W/ActivityManager(1426): HistoryRecord{40824588 com.hyperspacemg.showstopper/.MainActivity} のアクティビティ一時停止タイムアウトhyperspacemg.showstopper/.MainActivity 09-19 20:13:48.177: D/dalvikvm(1426): GC_EXTERNAL_ALLOC 解放 311K、42% 解放 6658K/11335K、外部 2060K/2067K、一時停止 73ms 09-19 20:13:48.237: D /dalvikvm(5379): GC_CONCURRENT 解放 346K、48% 空き 3158K/6023K、外部 0K/0K、一時停止 18ms+3ms 09-19 20:13:48.378: I/dalvikvm(5355): JIT の合計アリーナ ページ: 11 09 -19 20:13:48.518: W/ActivityManager(1426): HistoryRecord{40824588 com.hyperspacemg.showstopper/.MainActivity} のアクティビティ一時停止タイムアウトhyperspacemg.showstopper/.MainActivity 09-19 20:13:48.177: D/dalvikvm(1426): GC_EXTERNAL_ALLOC 解放 311K、42% 解放 6658K/11335K、外部 2060K/2067K、一時停止 73ms 09-19 20:13:48.237: D /dalvikvm(5379): GC_CONCURRENT 解放 346K、48% 空き 3158K/6023K、外部 0K/0K、一時停止 18ms+3ms 09-19 20:13:48.378: I/dalvikvm(5355): JIT の合計アリーナ ページ: 11 09 -19 20:13:48.518: W/ActivityManager(1426): HistoryRecord{40824588 com.hyperspacemg.showstopper/.MainActivity} のアクティビティ一時停止タイムアウト11 09-19 20:13:48.518: W/ActivityManager(1426): HistoryRecord{40824588 com.hyperspacemg.showstopper/.MainActivity} のアクティビティ一時停止タイムアウト11 09-19 20:13:48.518: W/ActivityManager(1426): HistoryRecord{40824588 com.hyperspacemg.showstopper/.MainActivity} のアクティビティ一時停止タイムアウト
主な活動
package com.hyperspacemg.showstopper;
import com.hyperspacemg.showstopper.ColorPickerDialog.OnColorChangedListener;
import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.widget.RadioButton;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
public class MainActivity extends Activity implements OnColorChangedListener
{
public static final String PREFS_NAME = "ShowStopperPrefsFile";
SeekBar seekbarChan, seekbarRed, seekbarGreen, seekbarBlue, seekbarBand, seekbarSens;
TextView valueChan, valueRed, valueGreen, valueBlue, side, valueBand, valueSens, valueSave;
private static int Chan = 0;
private static int Rset = 0;
private static int Gset = 0;
private static int Bset = 0;
private static int Side = 0;
private static int Band = 0;
private static int Sens = 24;
private static int Save = 0;
String chanFinal = null;
String redFinal = null;
String greenFinal = null;
String blueFinal = null;
String modeFinal = null;
String sideFinal = null;
String bandFinal = null;
String sensFinal = null;
String saveFinal = null;
String message = "<HMG" + chanFinal + ":" + redFinal + ":" + greenFinal + ":" + blueFinal + ":" + modeFinal + ":" + sideFinal + ":" + bandFinal + ":" + sensFinal + ":" + saveFinal + ">";
public MainActivity(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
valueChan = (TextView) findViewById(R.id.textViewChan);
seekbarChan = (SeekBar) findViewById(R.id.seekBarChan);
valueRed = (TextView) findViewById(R.id.textViewRed);
seekbarRed = (SeekBar) findViewById(R.id.seekBarRed);
valueGreen = (TextView) findViewById(R.id.textViewGreen);
seekbarGreen = (SeekBar) findViewById(R.id.seekBarGreen);
valueBlue = (TextView) findViewById(R.id.textViewBlue);
seekbarBlue = (SeekBar) findViewById(R.id.seekBarBlue);
valueBand = (TextView) findViewById(R.id.textViewBand);
seekbarBand = (SeekBar) findViewById(R.id.seekBarBand);
valueSens = (TextView) findViewById(R.id.textViewSens);
seekbarSens = (SeekBar) findViewById(R.id.seekBarSens);
int sbar_chan_position = settings.getInt("seekbar_chan_pref", 0);
seekbarChan.setProgress(sbar_chan_position);
valueChan.setText("Channel: " + sbar_chan_position);
Chan = sbar_chan_position;
int sbar_red_position = settings.getInt("seekbar_red_pref", 0);
seekbarRed.setProgress(sbar_red_position);
valueRed.setText("Red: " + sbar_red_position);
Rset = sbar_red_position;
int sbar_green_position = settings.getInt("seekbar_green_pref", 0);
seekbarGreen.setProgress(sbar_green_position);
valueGreen.setText("Green: " + sbar_green_position);
Gset = sbar_green_position;
int sbar_blue_position = settings.getInt("seekbar_blue_pref", 0);
seekbarBlue.setProgress(sbar_blue_position);
valueBlue.setText("Blue: " + sbar_blue_position);
Bset = sbar_blue_position;
int sbar_band_position = settings.getInt("seekbar_band_pref", 0);
seekbarBand.setProgress(sbar_band_position);
valueBand.setText("Band: " + sbar_band_position);
Band = sbar_band_position;
int sbar_sens_position = settings.getInt("seekbar_sens_pref", 0);
seekbarSens.setProgress(sbar_sens_position);
valueSens.setText("Sensitivity: " + sbar_red_position);
Sens = sbar_sens_position;
seekbarChan.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
valueChan.setText("Channel: " + progress);
Chan = progress;
String chanFinal = "" + Chan;
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
seekbarRed.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
valueRed.setText("Red: " + progress);
Rset = progress;
String redFinal = "" + Rset;
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
seekbarGreen.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
valueGreen.setText("Green: " + progress);
Gset = progress;
String greenFinal = "" + Gset;
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
seekbarBlue.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
valueBlue.setText("Blue: " + progress);
Bset = progress;
String blueFinal = "" + Bset;
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
seekbarBand.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
String audB = null;
switch(progress)
{
case 0:
audB = "63Hz";
break;
case 1:
audB = "160Hz";
break;
case 2:
audB = "400Hz";
break;
case 3:
audB = "1kHz";
break;
case 4:
audB = "2.5kHz";
break;
case 5:
audB = "6.25kHz";
break;
case 6:
audB = "16kHz";
break;
}
valueBand.setText("Band: " + audB);
Band = progress;
String bandFinal = "" + Band;
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
seekbarSens.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
int sensitivity = progress + 1;
valueSens.setText("Sensitivity: " + sensitivity);
Sens = progress;
String sensFinal = "" + Sens;
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void colorChanged(int color) {
int sbar_red_position = Color.red(color);
int sbar_green_position = Color.green(color);
int sbar_blue_position = Color.blue(color);
seekbarRed.setProgress(sbar_red_position);
valueRed.setText("Red: " + sbar_red_position);
Rset = sbar_red_position;
seekbarGreen.setProgress(sbar_green_position);
valueGreen.setText("Green: " + sbar_green_position);
Gset = sbar_green_position;
seekbarBlue.setProgress(sbar_blue_position);
valueBlue.setText("Blue: " + sbar_blue_position);
Bset = sbar_blue_position;
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("seekbar_red_pref", Rset);
editor.putInt("seekbar_green_pref", Gset);
editor.putInt("seekbar_blue_pref", Bset);
editor.commit();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
}
public void onClickColorPicker(View v) {
new ColorPickerDialog(this, this, Color.rgb(Rset, Gset, Bset)).show();
}
public void onRadioButtonClicked(View v) {
// When radio button is clicked
// dumb stuff to make these radio group
RadioButton rb = (RadioButton) v;
RadioButton rb0 = (RadioButton) findViewById(R.id.radio0);
RadioButton rb1 = (RadioButton) findViewById(R.id.radio1);
rb0.setChecked(false);
rb1.setChecked(false);
rb.setChecked(true);
// end dumb stuff
int checkedRadioButton = rb.getId();
String radioButtonSelected = "";
switch (checkedRadioButton) {
case R.id.radio0:
radioButtonSelected = "0";
break;
case R.id.radio1:
radioButtonSelected = "1";
break;
}
String audS = radioButtonSelected;
}
}
Main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp">
<TextView
android:id="@+id/textViewChan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:text="@string/channel"/>
<SeekBar
android:id="@+id/seekBarChan"
android:layout_below="@+id/textViewChan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="4"
android:paddingBottom="10dp" />
<Button
android:id="@+id/btnChoose"
android:layout_below="@+id/seekBarChan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="@string/choose"/>
<Button
android:id="@+id/btnRandom"
android:layout_below="@+id/btnChoose"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="@string/random"/>
<TextView
android:id="@+id/textViewRed"
android:layout_below="@+id/btnRandom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingTop="10dp"
android:text="@string/Red" />
<SeekBar
android:id="@+id/seekBarRed"
android:layout_below="@+id/textViewRed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:paddingBottom="10dp" />
<TextView
android:id="@+id/textViewGreen"
android:layout_below="@+id/seekBarRed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingTop="10dp"
android:text="@string/Green" />
<SeekBar
android:id="@+id/seekBarGreen"
android:layout_below="@+id/textViewGreen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:paddingBottom="10dp" />
<TextView
android:id="@+id/textViewBlue"
android:layout_below="@+id/seekBarGreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingTop="10dp"
android:text="@string/Blue" />
<SeekBar
android:id="@+id/seekBarBlue"
android:layout_below="@+id/textViewBlue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:paddingBottom="10dp" />
<Spinner
android:id="@+id/spinnerMode"
android:layout_below="@+id/seekBarBlue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/mode_array"
android:prompt="@string/mode_prompt" />
<TextView
android:id="@+id/textViewSide"
android:layout_below="@+id/spinnerMode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingTop="5dp"
android:text="@string/side" />
<RadioButton
android:id="@+id/radio0"
android:layout_below="@+id/textViewSide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginLeft="10dp"
android:checked="true"
android:onClick="onRadioButtonClicked"
android:text="@string/left" />
<RadioButton
android:id="@+id/radio1"
android:layout_below="@+id/textViewSide"
android:layout_toRightOf="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:onClick="onRadioButtonClicked"
android:text="@string/right" />
<TextView
android:id="@+id/textViewBand"
android:layout_below="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingTop="10dp"
android:text="@string/band" />
<SeekBar
android:id="@+id/seekBarBand"
android:layout_below="@+id/textViewBand"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="5"
android:paddingBottom="10dp" />
<TextView
android:id="@+id/textViewSens"
android:layout_below="@+id/seekBarBand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingTop="10dp"
android:text="@string/sens" />
<SeekBar
android:id="@+id/seekBarSens"
android:layout_below="@+id/textViewSens"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:paddingBottom="10dp" />
<Button
android:id="@+id/btnApply"
android:layout_below="@+id/seekBarSens"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="@string/apply"/>
<Button
android:id="@+id/btnSave"
android:layout_below="@+id/btnApply"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/save"/>
</RelativeLayout>
</ScrollView>
Strings.xml
<resources>
<string name="app_name">Show Stopper</string>
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">Show Stopper</string>
<string name="random">Random Color!</string>
<string name="channel">Channel %d</string>
<string name="Red">Red %d</string>
<string name="Green">Green %d</string>
<string name="Blue">Blue %d</string>
<string name="side">Audio Side</string>
<string name="left">Left</string>
<string name="right">Right</string>
<string name="band">Band %d</string>
<string name="sens">Sensitivity %d</string>
<string name="choose">Choose a Color!</string>
<string name="apply">Apply</string>
<string name="save">Save</string>
<string name="mode_prompt">Choose a Mode</string>
<string-array name="mode_array">
<item>Random Fade</item>
<item>HeartBeat Red</item>
<item>Set Color</item>
<item>Pulse Color</item>
<item>Heartbeat Color</item>
<item>Audio Color</item>
<item>Audio Random Flash</item>
<item>Audio Random Set</item>
</string-array>
</resources>