質問編集履歴
1
Serviceのソースコード、試したこと、補足を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,33 +1,21 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
|
4
|
-
|
5
3
|
初めて質問させていただきます。
|
6
4
|
|
7
5
|
Androidでアプリやブラウザ上に仮想ボタンのようなものを表示させ続けるアプリを作ろうと考えております。
|
8
6
|
|
9
|
-
|
10
|
-
|
11
7
|
現在、アプリのトップ画面を形成するActivity内にServiceを開始する(仮想ボタンを表示させる)ボタンとSpinnerを設定しており、Spinnerで選択された値によって仮想ボタンが表示される初期位置を決められるようにしたいと考えております。
|
12
8
|
|
13
9
|
そこで、Activity内のSpinnerで選択された値をService側へ送ればよいのではないかと考えており、intentを使ってActivityからServiceへ値を送りたいと考えております。しかし、Service側で値が参照できないのか、うまく値を送ることができません。
|
14
10
|
|
15
|
-
|
16
|
-
|
17
11
|
ActivityからServiceへ値を送るにはどうすればよいのでしょうか?よくわかっていない部分も多く、コードも見づらいとは思いますがどなたかご助力いただければ幸いです。
|
18
12
|
|
19
|
-
### 発生している問題・エラーメッセージ
|
20
|
-
|
21
|
-
|
22
|
-
|
23
13
|
```
|
24
14
|
|
25
15
|
Compilation failed; see the compiler error output for details.
|
26
16
|
|
27
17
|
```
|
28
18
|
|
29
|
-
|
30
|
-
|
31
19
|
### 該当のソースコード
|
32
20
|
|
33
21
|
|
@@ -302,7 +290,141 @@
|
|
302
290
|
|
303
291
|
|
304
292
|
|
305
|
-
|
293
|
+
import android.app.Notification;
|
294
|
+
|
295
|
+
import android.app.NotificationChannel;
|
296
|
+
|
297
|
+
import android.app.NotificationManager;
|
298
|
+
|
299
|
+
import android.app.PendingIntent;
|
300
|
+
|
301
|
+
import android.app.Service;
|
302
|
+
|
303
|
+
import android.content.Context;
|
304
|
+
|
305
|
+
import android.content.Intent;
|
306
|
+
|
307
|
+
import android.graphics.PixelFormat;
|
308
|
+
|
309
|
+
import android.net.Uri;
|
310
|
+
|
311
|
+
import android.os.IBinder;
|
312
|
+
|
313
|
+
import android.util.Log;
|
314
|
+
|
315
|
+
import android.view.Gravity;
|
316
|
+
|
317
|
+
import android.view.LayoutInflater;
|
318
|
+
|
319
|
+
import android.view.MotionEvent;
|
320
|
+
|
321
|
+
import android.view.View;
|
322
|
+
|
323
|
+
import android.view.ViewGroup;
|
324
|
+
|
325
|
+
import android.view.WindowManager;
|
326
|
+
|
327
|
+
import android.widget.ImageButton;
|
328
|
+
|
329
|
+
import android.widget.TableLayout;
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
public class TestService extends Service {
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
//画面に全面表示させるビュー
|
338
|
+
|
339
|
+
private View view;
|
340
|
+
|
341
|
+
private WindowManager windowManager;
|
342
|
+
|
343
|
+
private int dpScale;
|
344
|
+
|
345
|
+
private ImageButton button1, button2, button3, button4, button5, button6;
|
346
|
+
|
347
|
+
private TableLayout tableLayout;
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
@Override
|
352
|
+
|
353
|
+
public void onCreate() {
|
354
|
+
|
355
|
+
super.onCreate();
|
356
|
+
|
357
|
+
|
358
|
+
|
359
|
+
// dipを取得
|
360
|
+
|
361
|
+
dpScale = (int)getResources().getDisplayMetrics().density;
|
362
|
+
|
363
|
+
|
364
|
+
|
365
|
+
}
|
366
|
+
|
367
|
+
|
368
|
+
|
369
|
+
@Override
|
370
|
+
|
371
|
+
public int onStartCommand(Intent intent, int flags, int startId) { // startServiceでサービスが開始要求を受けた時のコールバック。
|
372
|
+
|
373
|
+
// startForegroundService() -----
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
Context context = getApplicationContext();
|
378
|
+
|
379
|
+
String channelId = "default";
|
380
|
+
|
381
|
+
String title = context.getString(R.string.app_name);
|
382
|
+
|
383
|
+
|
384
|
+
|
385
|
+
~(略)~
|
386
|
+
|
387
|
+
Intent intent = getIntent();
|
388
|
+
|
389
|
+
String item = intent.getStringExtra("①,②,③,④");
|
390
|
+
|
391
|
+
params.gravity = Gravity.TOP | Gravity.END;
|
392
|
+
|
393
|
+
if(item = intent.getStringExtra("①")) {
|
394
|
+
|
395
|
+
// 左上(①)に配置
|
396
|
+
|
397
|
+
params.x = 200 * dpScale; // 200dp
|
398
|
+
|
399
|
+
params.y = 80 * dpScale; // 80dp
|
400
|
+
|
401
|
+
}else if(item = intent.getStringExtra("②")) {
|
402
|
+
|
403
|
+
// 右上(②)に配置
|
404
|
+
|
405
|
+
params.x = 20 * dpScale; // 20dp
|
406
|
+
|
407
|
+
params.y = 80 * dpScale; // 80dp
|
408
|
+
|
409
|
+
}else if(item = intent.getStringExtra("③")) {
|
410
|
+
|
411
|
+
// 左下(③)に配置
|
412
|
+
|
413
|
+
params.x = 200 * dpScale; // 200dp
|
414
|
+
|
415
|
+
params.y = 300 * dpScale; //
|
416
|
+
|
417
|
+
}else {
|
418
|
+
|
419
|
+
// 右下(④)に配置
|
420
|
+
|
421
|
+
params.x = 20 * dpScale; // 20dp
|
422
|
+
|
423
|
+
params.y = 300 * dpScale; // 300dp
|
424
|
+
|
425
|
+
}
|
426
|
+
|
427
|
+
~(略)~
|
306
428
|
|
307
429
|
```
|
308
430
|
|
@@ -310,12 +432,28 @@
|
|
310
432
|
|
311
433
|
|
312
434
|
|
435
|
+
```
|
436
|
+
|
437
|
+
Intent intent = getIntent();
|
438
|
+
|
439
|
+
~(略)~
|
440
|
+
|
313
|
-
|
441
|
+
// 右下(④)に配置
|
442
|
+
|
314
|
-
|
443
|
+
params.x = 20 * dpScale; // 20dp
|
444
|
+
|
315
|
-
|
445
|
+
params.y = 300 * dpScale; // 300dp
|
446
|
+
|
447
|
+
}
|
448
|
+
|
449
|
+
```
|
450
|
+
|
451
|
+
の部分にエラーが出ております。if文(あるいはそれ以外の条件文)を使うこと自体がおかしいのか、ServiceではgetIntentを用いること自体ができないのか、様々なサイトを調べましたが、解決方法が見つかりませんでした。
|
316
452
|
|
317
453
|
### 補足情報(FW/ツールのバージョンなど)
|
318
454
|
|
319
455
|
|
320
456
|
|
457
|
+
言語:Java
|
458
|
+
|
321
|
-
|
459
|
+
開発環境:Android Studio3.1.3
|