質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

3430閲覧

Java Android SeekBarの値を渡す

t-_.

総合スコア55

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/03/30 13:07

編集2016/03/30 13:08

SeekBarを使ってMainclassから違うクラスに値を渡したいです。
違うクラスというのが、Serviceを使っているので、Intentを使ってやるやり方がよく分かりません。
どのような方法でもよいので、教えてください。
実際は、mView.setBackgroundColor(Color.argb(+50, 0, 0, 0));
↑にSeekBarの値を入れたいです。

###ソースコード

java

1public class MainActivity extends Activity{ 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 8 9 final Intent intent = new Intent(MainActivity.this, FilterService.class); 10 final TextView tv = (TextView)findViewById(R.id.tv); 11 //final Intent i = new Intent(MainActivity.this, FilterService.class); 12 13 final SeekBar sb = (SeekBar)findViewById(R.id.seekBar); 14 sb.setOnSeekBarChangeListener( 15 new SeekBar.OnSeekBarChangeListener() { 16 public void onProgressChanged(SeekBar seekBar,int progress, boolean fromUser) { 17 // ツマミをドラッグしたときに呼ばれる 18 tv.setText("設定値:"+sb.getProgress()); 19 } 20 //つまみに触れたときに呼ばれる 21 public void onStartTrackingTouch(SeekBar seekBar) {} 22 23 //つまみを離したときに呼ばれる 24 public void onStopTrackingTouch(SeekBar seekBar) { 25 startService(intent); 26 } 27 } 28 ); 29 Button buttonAddFilter = (Button) findViewById(R.id.ButtonAddFilter); 30 buttonAddFilter.setOnClickListener(new View.OnClickListener() { 31 @Override 32 public void onClick(View v) { 33 setNotification(); 34 startService(intent); 35 } 36 }); 37 38 Button buttonRemoveFilter = (Button) findViewById(R.id.ButtonRemoveFilter); 39 buttonRemoveFilter.setOnClickListener(new View.OnClickListener() { 40 @Override 41 public void onClick(View v) { 42 cancelNotification(); 43 stopService(intent); 44 } 45 }); 46 47 }

###ソースコード

java

1public class FilterService extends Service { 2 3 4 private View mView; 5 private WindowManager mWindowManager; 6 7 8 @Override 9 public int onStartCommand(Intent intent, int flags, int startId) { 10 11 //重ねあわせするViewの設定 12 WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( 13 WindowManager.LayoutParams.MATCH_PARENT, 14 WindowManager.LayoutParams.MATCH_PARENT, 15 WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, //オーバーレイヤーに設定 16 WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 17 PixelFormat.TRANSLUCENT //ウインドウの透明化 18 ); 19 20 LayoutInflater layoutInflater = LayoutInflater.from(this); 21 22 //WindowManagerを取得 23 mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 24 25 //レイアウトファイルから重ねあわせするViewを作成 26 mView = layoutInflater.inflate(R.layout.filter, null); 27 28 //透過率80の黒色のフィルターを指定 29 //パラメータは左から(透過率,R,G,B) ココをいじれば任意のフィルターに変更可能 30 mView.setBackgroundColor(Color.argb(+200, 0, 0, 0)); 31 32 //Viewを画面上に重ねあわせする 33 //mWindowManager.addView(mView, layoutParams); 34 35 return START_STICKY; 36 } 37 38 @Override 39 public void onDestroy() { 40 super.onDestroy(); 41 mWindowManager.removeView(mView); 42 } 43 44 @Nullable 45 @Override 46 public IBinder onBind(Intent intent) { 47 return null; 48 } 49 @Override 50 public void onRebind(Intent intent){} 51 52 @Override 53 public boolean onUnbind(Intent intent){ 54 //onUnbindをreturn trueでoverrideすると次回バインド時にonRebildが呼ばれる 55 return false; 56 } 57

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

intent.putExtra(key,value)で起動先のアクティビティやサービスに値を受け渡すことができます。
Intentでint型の値を受け取るにはintent.getIntExtra(kye,defaultValue)を使います。defaultValueには値が受けわたされなかった場合の値を指定します。

まず、activity側をこのように変更して下さい。

java

1Intent intent = new Intent(this,FilterService.class); 2intent.putExtra("value", sb.getProgress()); 345 startService(intent);

次に、serviceのonStartCommandをこのように変更します。

java

1@Override 2public int onStartCommand(Intent intent, int flags, int startId) { 3int value=intent.getIntExtra("value",0) 45

これで値が受けとれるはずです。

投稿2016/03/30 15:31

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問