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

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

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

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

791閲覧

import android.media.SoundPool;について

退会済みユーザー

退会済みユーザー

総合スコア0

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Android

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2021/10/17 11:54

以下のソースについて、質問なのですが
「private static SoundPool soundPool;」というコードがありますが、
これはSoundPoolクラスのインスタンスをグローバル変数として定義しているのでしょうか、

リンク内容

package jp.codeforfun.catchtheball; import android.content.Context; import android.media.AudioAttributes; import android.media.AudioManager; import android.media.SoundPool; public class SoundPlayer { private static SoundPool soundPool; private static int hitSound; private static int overSound; public SoundPlayer(Context context) { soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0); hitSound = soundPool.load(context, R.raw.hit, 1); overSound = soundPool.load(context, R.raw.over, 1); } public void playHitSound() { soundPool.play(hitSound, 1.0f, 1.0f, 1, 0, 1.0f); } public void playOverSound() { soundPool.play(overSound, 1.0f, 1.0f, 1, 0, 1.0f); } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

private というアクセス修飾子が付いているため、static 変数で定義されていても外部から利用することはできません。よって、グローバル変数ではありません。

リンク先を拝見いたしましたが、そもそも static 変数である必要がありません。

以下のようにできます。

java

1package jp.codeforfun.catchtheball; 2 3import android.content.Context; 4import android.media.AudioAttributes; 5import android.media.AudioManager; 6import android.media.SoundPool; 7 8public class SoundPlayer { 9 10 private final SoundPool soundPool; 11 private final int hitSound; 12 private final int overSound; 13 14 public SoundPlayer(Context context) { 15 16 soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0); 17 18 hitSound = soundPool.load(context, R.raw.hit, 1); 19 overSound = soundPool.load(context, R.raw.over, 1); 20 } 21 22 public void playHitSound() { 23 soundPool.play(hitSound, 1.0f, 1.0f, 1, 0, 1.0f); 24 } 25 26 public void playOverSound() { 27 soundPool.play(overSound, 1.0f, 1.0f, 1, 0, 1.0f); 28 } 29}

ちなみに、プライベートな static メンバ変数の使い道は、SoundPlayer のインスタンスを生成せずに SoundPool のインスタンスを使いたい時などです。

以下がその例です。(今回は分かりやすいように hitSound と overSound を除外して固定値にしています)

java

1package jp.codeforfun.catchtheball; 2 3import android.media.AudioManager; 4import android.media.SoundPool; 5 6public class SoundPlayer { 7 8 private static SoundPool soundPool; 9 10 private static SoundPool getSoundPool() { 11 if (soundPool == null) { 12 soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0); 13 } 14 return soundPool; 15 } 16 17 public static void playHitSound() { 18 getSoundPool().play(1, 1.0f, 1.0f, 1, 0, 1.0f); 19 } 20 21 public static void playOverSound() { 22 getSoundPool().play(2, 1.0f, 1.0f, 1, 0, 1.0f); 23 } 24}

投稿2021/10/17 15:08

編集2021/10/17 16:52
blendthink

総合スコア25

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

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

退会済みユーザー

退会済みユーザー

2021/10/17 16:36

なるほどfinalでも定義ができますね、ありがとうございます。 ちなみにクラスの中で定義がされている「private static 変数名」のようなものは 単にプライベートのメンバ変数と呼称するのでしょうか
blendthink

2021/10/17 16:47

static の意味を省くことのないように、プライベートな static メンバ変数と呼称しております。(そのままです) ちなみに、このようなものをどんなときに使うかというのは回答の中に追記しておきます。
退会済みユーザー

退会済みユーザー

2021/10/18 12:23

ありがとうございます。助かります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問