質問編集履歴

1

Serviceのソースコード、試したこと、補足を追記

2019/02/13 13:22

投稿

mssgm
mssgm

スコア13

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