powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / onTouch со звуком
25 сообщений из 50, страница 1 из 2
onTouch со звуком
    #39268118
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет!
хочу,чтоб при касании кнопки звучал короткий звук из raw
перепробовал все, что предлагалось на просторах форумов, выдает ошибки((

с обычным кликом activity выглядит так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
package com.example.drums.magicdrums;

import android.content.Intent;
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.SoundPool;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

public class Main2Activity extends AppCompatActivity {


    private SoundPool soundPool;

    private AudioManager audioManager;

    // Maximumn sound stream.
    private static final int MAX_STREAMS = 5;

    // Stream type.
    private static final int streamType = AudioManager.STREAM_MUSIC;

    private boolean loaded;

    private int soundIdbutton;
    private int soundIdbutton2;
    private int soundIdbutton3;
    private int soundIdbutton5;
    private int soundIdbutton6;
    private int soundIdbutton7;
    private int soundIdbutton8;
    private int soundIdbutton9;
    private int soundIdbutton10;
    private int soundIdbutton11;
    private float volume;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        // AudioManager audio settings for adjusting the volume
        audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);

        // Current volumn Index of particular stream type.
        float currentVolumeIndex = (float) audioManager.getStreamVolume(streamType);

        // Get the maximum volume index for a particular stream type.
        float maxVolumeIndex  = (float) audioManager.getStreamMaxVolume(streamType);

        // Volumn (0 --> 1)
        this.volume = currentVolumeIndex / maxVolumeIndex;

        // Suggests an audio stream whose volume should be changed by
        // the hardware volume controls.
        this.setVolumeControlStream(streamType);

        // For Android SDK >= 21
        if (Build.VERSION.SDK_INT >= 21 ) {

            AudioAttributes audioAttrib = new AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_GAME)
                    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                    .build();

            SoundPool.Builder builder= new SoundPool.Builder();
            builder.setAudioAttributes(audioAttrib).setMaxStreams(MAX_STREAMS);

            this.soundPool = builder.build();
        }
        // for Android SDK < 21
        else {
            // SoundPool(int maxStreams, int streamType, int srcQuality)
            this.soundPool = new SoundPool(MAX_STREAMS, AudioManager.STREAM_MUSIC, 0);
        }

        // When Sound Pool load complete.
        this.soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                loaded = true;
            }
        });

        // Load sound file (destroy.wav) into SoundPool.
        this.soundIdbutton = this.soundPool.load(this, R.raw.button,1);
        this.soundIdbutton2 = this.soundPool.load(this, R.raw.button2,1);
        this.soundIdbutton3 = this.soundPool.load(this, R.raw.button3,1);
        this.soundIdbutton5 = this.soundPool.load(this, R.raw.button5,1);
        this.soundIdbutton6 = this.soundPool.load(this, R.raw.button6,1);
        this.soundIdbutton7 = this.soundPool.load(this, R.raw.button7,1);
        this.soundIdbutton8 = this.soundPool.load(this, R.raw.button8,1);
        this.soundIdbutton9 = this.soundPool.load(this, R.raw.button9,1);
        this.soundIdbutton10 = this.soundPool.load(this, R.raw.button10,1);
        this.soundIdbutton11 = this.soundPool.load(this, R.raw.button11,1);

    }



    public void playSoundButton(View view)  {
        if(loaded)  {
            float leftVolumn = volume;
            float rightVolumn = volume;
            int streamId = this.soundPool.play(this.soundIdbutton,leftVolumn, rightVolumn, 1, 0, 1f);
        }
    }

    public void playSoundButton2(View view)  {
        if(loaded)  {
            float leftVolumn = volume;
            float rightVolumn = volume;

            // Play sound objects destroyed. Returns the ID of the new stream.
            int streamId = this.soundPool.play(this.soundIdbutton2,leftVolumn, rightVolumn, 1, 0, 1f);
        }
    }
    public void playSoundButton3(View view)  {
        if(loaded)  {
            float leftVolumn = volume;
            float rightVolumn = volume;
            int streamId = this.soundPool.play(this.soundIdbutton3,leftVolumn, rightVolumn, 1, 0, 1f);
        }
    }
    public void playSoundButton5(View view)  {
        if(loaded)  {
            float leftVolumn = volume;
            float rightVolumn = volume;
            int streamId = this.soundPool.play(this.soundIdbutton5,leftVolumn, rightVolumn, 1, 0, 1f);
        }
    }
    public void playSoundButton6(View view)  {
        if(loaded)  {
            float leftVolumn = volume;
            float rightVolumn = volume;
            int streamId = this.soundPool.play(this.soundIdbutton6,leftVolumn, rightVolumn, 1, 0, 1f);
        }
    }
    public void playSoundButton7(View view)  {
        if(loaded)  {
            float leftVolumn = volume;
            float rightVolumn = volume;
            int streamId = this.soundPool.play(this.soundIdbutton7,leftVolumn, rightVolumn, 1, 0, 1f);
        }
    }
    public void playSoundButton8(View view)  {
        if(loaded)  {
            float leftVolumn = volume;
            float rightVolumn = volume;
            int streamId = this.soundPool.play(this.soundIdbutton8,leftVolumn, rightVolumn, 1, 0, 1f);
        }
    }
    public void playSoundButton9(View view)  {
        if(loaded)  {
            float leftVolumn = volume;
            float rightVolumn = volume;
            int streamId = this.soundPool.play(this.soundIdbutton9,leftVolumn, rightVolumn, 1, 0, 1f);
        }
    }
    public void playSoundButton10(View view)  {
        if(loaded)  {
            float leftVolumn = volume;
            float rightVolumn = volume;
            int streamId = this.soundPool.play(this.soundIdbutton10,leftVolumn, rightVolumn, 1, 0, 1f);
        }
    }
    public void playSoundButton11(View view)  {
        if(loaded)  {
            float leftVolumn = volume;
            float rightVolumn = volume;
            int streamId = this.soundPool.play(this.soundIdbutton11,leftVolumn, rightVolumn, 1, 0, 1f);
        }
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate( R.menu.menu_main, menu );
        return true;
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        if (id == R.id.item1) {
            Intent browseIntent = new Intent( Intent.ACTION_VIEW, Uri.parse( "http://www.iljatihomirov.wix.com/appi" ) );
            startActivity( browseIntent );
        }


        return super.onOptionsItemSelected( item );
    }


}



как поменять это добро на touch?
заранее спасибо!
...
Рейтинг: 0 / 0
onTouch со звуком
    #39268342
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробовал так оформить активити...выдает ошибку на
Код: java
1.
public class Main2Activity extends Activity implements OnTouchListener {



и на
Код: java
1.
setOnTouchListener



вот весь код активности:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
package com.example.drums.magicdrums;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

public class Main2Activity extends Activity implements OnTouchListener {

    MediaPlayer mp;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        mp=MediaPlayer.create(Main2Activity.this,R.raw.button);

        this.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    mp.setLooping(true);
                    mp.start();
                }

                if (event.getAction() == MotionEvent.ACTION_UP) {
                    mp.stop();
                    mp= MediaPlayer.create(Main2Activity.this,R.raw.button);
                }
                return false;
            }
        });

    }


    }

...
Рейтинг: 0 / 0
onTouch со звуком
    #39268363
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребяяят, ну посоветуйте хоть статью какую...дня три уже копаюсь((
...
Рейтинг: 0 / 0
onTouch со звуком
    #39268669
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может какие то основы почитать ?
а то , не понимание как работать с тем же
...
Рейтинг: 0 / 0
onTouch со звуком
    #39268709
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilja2210,

решил делать, как я советовал?
...
Рейтинг: 0 / 0
onTouch со звуком
    #39268769
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

это к тому не относится...пока-что))
...
Рейтинг: 0 / 0
onTouch со звуком
    #39268770
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

запилил вот такой вариант:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
package com.example.drums.magicdrums;

import android.app.Activity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

public class Main2Activity extends Activity implements OnTouchListener {
    private SoundPool soundPool;
    private int soundID;
    boolean loaded = false;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        View view = findViewById(R.id.button);
        view.setOnTouchListener(this);
        // Set the hardware buttons to control the music
        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
        // Load the sound
        soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
        soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId,
                                       int status) {
                loaded = true;
            }
        });
        soundID = soundPool.load(this, R.raw.button, 1);

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            // Getting the user sound settings
            AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
            float actualVolume = (float) audioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC);
            float maxVolume = (float) audioManager
                    .getStreamMaxVolume(AudioManager.STREAM_MUSIC);
            float volume = actualVolume / maxVolume;
            // Is the sound loaded already?
            if (loaded) {
                soundPool.play(soundID, volume, volume, 1, 0, 1f);
                Log.e("Test", "Played sound");
            }
        }
        return false;
    }
}


выдает ошибки по всему проекту с R, ребилд чет не помог...и не понимаю, как добавить описание действий для остальных кнопом...
тупо, вот и прошу помощи)
...
Рейтинг: 0 / 0
onTouch со звуком
    #39268899
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. мы должны гадать по поводу ошибки ?
2. подсказки IDE как бы тебе говорят что можно сделать. если наведешь или кликнешь на красный/желтый кружечек то поскажет что можно сделать или кликнув по пункту он сам сделает за тебя
...
Рейтинг: 0 / 0
onTouch со звуком
    #39268930
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

было бы круто, если бы вы подсказали, как переделать первый код...он работает отлично, но звук идет только после того, как кнопку отпускаю
дальше варианты, которые по той, или иной причине не пошли((
"должны" тут вообще не причем- просьба, не более, буду рад любым советам, кроме как "погугли"(это елаю уже четвертый день)
...
Рейтинг: 0 / 0
onTouch со звуком
    #39268999
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпервый код...он работает отлично, но звук идет только после того, как кнопку отпускаю

1. логично потому как событие срабатывает после нажатия и "отжатия".


авторкак переделать первый код

в чем проблема наследоваться от стандартной кнопки. в методе onTouch
дописать что нужно ?

и он ужасен вместо одной функции , какая то лапша из однотипных.
которые легко заменяются одной.
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269024
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

так, теперь у меня мысли,как лапша(
как переписать первый код под onTouch?
во втором коде тупо вылет после нажатия
про третий я уже писал, но он не сильно лучше второго
я в сметении
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269065
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilja2210я в сметении
так всегда и бывает, когда тыкаешь пальцем в небо, толком не понимая, что делаешь.
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269169
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chpasha,
ну, знаете, это не решение, пытаюсь что-то сделать, читаю, учу

тут вот застопорился
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269429
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilja2210тупо, вот и прошу помощи)
Если хочешь помощи по ошибке, то без её текста проблемно будет помочь.
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269461
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

да думал тупо кто-то изменит пару строк в первом коде, как-то надо поменять onClickListener на OnTouchListener. Не совсем понимаю, как дальше писать с When it's down, Up...
сейчас код такой:\
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
package com.example.drums.magicdrums;

import android.app.Activity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;



public class AndroidSoundPoolExample extends Activity {



    private SoundPool soundPool;
    private int soundID;
    boolean plays = false, loaded = false;
    float actVolume, maxVolume, volume;
    AudioManager audioManager;
    int counter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        actVolume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
        maxVolume = (float) audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        volume = actVolume / maxVolume;

        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);

        counter = 0;

        soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
        soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {

            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                loaded = true;
            }
        });
        soundID = soundPool.load(this, R.raw.beep, 1);
    }
    public void playSound(View v) {
        if (loaded && !plays) {
            soundPool.play(soundID, volume, volume, 1, 0, 1f);
            counter = counter++;
            Toast.makeText(this, "Played sound", Toast.LENGTH_SHORT).show();
            plays = true;
        }}
    public void playLoop(View v) {
        if (loaded && !plays) {
            soundPool.play(soundID, volume, volume, 1, -1, 1f);
            counter = counter++;
            Toast.makeText(this, "Plays loop", Toast.LENGTH_SHORT).show();
            plays = true;
        }
    }

    public void pauseSound(View v) {
        if (plays) {
            soundPool.pause(soundID);
            soundID = soundPool.load(this, R.raw.beep, counter);
            Toast.makeText(this, "Pause sound", Toast.LENGTH_SHORT).show();
            plays = false;
        }

    }

    public void stopSound(View v) {
        if (plays) {
            soundPool.stop(soundID);
            soundID = soundPool.load(this, R.raw.beep, counter);
            Toast.makeText(this, "Stop sound", Toast.LENGTH_SHORT).show();
            plays = false;
        }

    }

}



9:58:50 Executing tasks: [clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:compileDebugSources, :app:compileDebugAndroidTestSources, :app:compileDebugUnitTestSources]
9:59:20 Gradle build finished with 1 error(s) in 29s 846ms

Error:Execution failed for task ':app:mergeDebugResources'.
> -1

по всему проекту чет R выдает как ошибку, добавлял в implement, делал ребилд, делал ребилд через gradle, не дало результатов
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269563
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilja2210Error:Execution failed for task ':app:mergeDebugResources'.
Дак ресурсы у тебя кривые... Вспоминай, что добавлял или менял в последнее время.
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269650
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

теперь тут все норм, появились вылеты

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
 Process: com.example.drums.magicdrums, PID: 2580
                                                                            java.lang.IllegalStateException: Could not find a method playSoundButton(View) in the activity class com.example.drums.magicdrums.Main2Activity for onClick handler on view class android.widget.Button with id 'button'
                                                                                at android.view.View$1.onClick(View.java:3994)
                                                                                at android.view.View.performClick(View.java:4756)
                                                                                at android.view.View$PerformClick.run(View.java:19749)
                                                                                at android.os.Handler.handleCallback(Handler.java:739)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                at android.os.Looper.loop(Looper.java:135)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5257)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:921)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:716)
                                                                             Caused by: java.lang.NoSuchMethodException: playSoundButton [class android.view.View]
                                                                                at java.lang.Class.getMethod(Class.java:664)
                                                                                at java.lang.Class.getMethod(Class.java:643)
                                                                                at android.view.View$1.onClick(View.java:3987)
                                                                                at android.view.View.performClick(View.java:4756) 
                                                                                at android.view.View$PerformClick.run(View.java:19749) 
                                                                                at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                at android.os.Looper.loop(Looper.java:135) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5257) 
                                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:921) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:716) 




активити:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
package com.example.drums.magicdrums;

import android.app.Activity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;



public class Main2Activity extends Activity {



    private SoundPool soundPool;
    private int soundID;
    boolean plays = false, loaded = false;
    float actVolume, maxVolume, volume;
    AudioManager audioManager;
    int counter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        actVolume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
        maxVolume = (float) audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        volume = actVolume / maxVolume;

        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);

        counter = 0;

        soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
        soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {

            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                loaded = true;
            }
        });
        soundID = soundPool.load(this, R.raw.button, 1);
    }
    public void playSound(View v) {
        if (loaded && !plays) {
            soundPool.play(soundID, volume, volume, 1, 0, 1f);
            counter = counter++;
            Toast.makeText(this, "Played sound", Toast.LENGTH_SHORT).show();
            plays = true;
        }}
    public void playLoop(View v) {
        if (loaded && !plays) {
            soundPool.play(soundID, volume, volume, 1, -1, 1f);
            counter = counter++;
            Toast.makeText(this, "Plays loop", Toast.LENGTH_SHORT).show();
            plays = true;
        }
    }

    public void pauseSound(View v) {
        if (plays) {
            soundPool.pause(soundID);
            soundID = soundPool.load(this, R.raw.button, counter);
            Toast.makeText(this, "Pause sound", Toast.LENGTH_SHORT).show();
            plays = false;
        }

    }

    public void stopSound(View v) {
        if (plays) {
            soundPool.stop(soundID);
            soundID = soundPool.load(this, R.raw.button, counter);
            Toast.makeText(this, "Stop sound", Toast.LENGTH_SHORT).show();
            plays = false;
        }

    }

}



лейаут:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.drums.magicdrums.Main2Activity"
    android:background="@color/accent_material_dark">

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:onClick="playSoundButton"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:id="@+id/button"
        android:background="@drawable/ccc"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:onClick="playSoundButton2"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:id="@+id/button2"
        android:background="@drawable/ccc"
        android:layout_alignTop="@+id/button"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:onClick="playSoundButton3"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:id="@+id/button3"
        android:background="@drawable/ccc"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:onClick="playSoundButton6"
        android:layout_width="135dp"
        android:layout_height="135dp"
        android:id="@+id/button6"
        android:background="@drawable/zzz"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:onClick="playSoundButton5"
        android:layout_width="135dp"
        android:layout_height="135dp"
        android:id="@+id/button5"
        android:background="@drawable/zzz"
        android:layout_centerVertical="true"
        android:layout_alignRight="@+id/button3"
        android:layout_alignEnd="@+id/button3"
        android:layout_marginRight="93dp"
        android:layout_marginEnd="93dp"
        android:clickable="true"/>

    <Button
        android:onClick="playSoundButton7"
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="135dp"
        android:layout_height="135dp"
        android:id="@+id/button7"
        android:background="@drawable/zzz"
        android:layout_alignTop="@+id/button5"
        android:layout_alignLeft="@+id/button3"
        android:layout_alignStart="@+id/button3"
        android:layout_marginLeft="97dp"
        android:layout_marginStart="97dp"
        android:clickable="true"/>

    <Button
        android:onClick="playSoundButton8"
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="90dp"
        android:layout_height="90dp"
        android:id="@+id/button8"
        android:background="@drawable/xxx"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:clickable="true"/>

    <Button
        android:onClick="playSoundButton9"
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="90dp"
        android:layout_height="90dp"
        android:id="@+id/button9"
        android:background="@drawable/xxx"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:clickable="true"/>

    <Button
        android:onClick="playSoundButton10"
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="90dp"
        android:layout_height="90dp"
        android:id="@+id/button10"
        android:background="@drawable/xxx"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/button8"
        android:layout_toEndOf="@+id/button8"
        android:clickable="true"/>

    <Button
        android:onClick="playSoundButton11"
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="90dp"
        android:layout_height="90dp"
        android:id="@+id/button11"
        android:background="@drawable/xxx"
        android:layout_alignBottom="@+id/button9"
        android:layout_toLeftOf="@+id/button9"
        android:layout_toStartOf="@+id/button9"
        android:clickable="true"/>
</RelativeLayout>

...
Рейтинг: 0 / 0
onTouch со звуком
    #39269749
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а подумать ?

у тебя в ресурсах указано что используются методы но их нет.
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269764
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

теперь все работает. Только чет не врубаюсь, как сделать так, чтобы при ACTION_UP ниче не звучало)
еще гадаю, как добавить остальные кнопки (butto2,3,5,6... айдишнику кнопки соответствует название звука, тюею звуки называются button2,3,5,6...)
вот как это запилить?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
package com.example.drums.magicdrums;

import android.app.Activity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

public class Main2Activity extends Activity implements OnTouchListener {
    private SoundPool soundPool;
    private int soundID;
    boolean loaded = false;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        View view = findViewById(R.id.button);
        view.setOnTouchListener(this);
// Set the hardware buttons to control the music
        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
// Load the sound
        soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
        soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId,
                                       int status) {
                loaded = true;
            }
        });
        soundID = soundPool.load(this, R.raw.button, 1);

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
// Getting the user sound settings
            AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
            float actualVolume = (float) audioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC);
            float maxVolume = (float) audioManager
                    .getStreamMaxVolume(AudioManager.STREAM_MUSIC);
            float volume = actualVolume / maxVolume;
// Is the sound loaded already?
            if (loaded) {
                soundPool.play(soundID, volume, volume, 1, 0, 1f);
                Log.e("Test", "Played sound");
            }

        }
        if (event.getAction() == MotionEvent.ACTION_UP) {
// Getting the user sound settings
            AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
            float actualVolume = (float) audioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC);
            float maxVolume = (float) audioManager
                    .getStreamMaxVolume(AudioManager.STREAM_MUSIC);
            float volume = actualVolume / maxVolume;
// Is the sound loaded already?
            if (loaded) {
                soundPool.play(soundID, volume, volume, 1, 0, 1f);
                Log.e("Test", "Played sound");
            }

        }


        return true;
    }
}


Модератор: Очень рекомендую использовать тэг "спойлер", чтобы прятать туда портянки с кодом.
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269770
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilja2210Только чет не врубаюсь, как сделать так, чтобы при ACTION_UP ниче не звучало)

реально. то есть ты даже очевидные вещи не замечаешь ?
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269775
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

пока не вставил этот блок, при отжатии был вылет
ну чесн, не догоняю
...
Рейтинг: 0 / 0
onTouch со звуком
    #39269843
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

как сделать так, чтобы работало для всех кнопок, до моня дошло, помогите, пожалуйста, с функцией UP
не доходит)
...
Рейтинг: 0 / 0
onTouch со звуком
    #39270559
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

все,разобрался
...
Рейтинг: 0 / 0
onTouch со звуком
    #39270578
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс,

теперь проблема-хз, как добавить поддержку остальных кнопок((
тут совсем туго
...
Рейтинг: 0 / 0
onTouch со звуком
    #39270664
ilja2210
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
package com.example.drums.magicdrums;

import android.app.Activity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

public class Main2Activity extends Activity implements OnTouchListener {
    private SoundPool soundPool;
    private int soundID;
    boolean loaded = false;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        View view = findViewById(R.id.button);
        View view2 = findViewById(R.id.button2);
        View view3 = findViewById(R.id.button3);
        View view5 = findViewById(R.id.button5);
        View view6 = findViewById(R.id.button6);
        View view7 = findViewById(R.id.button7);
        View view8 = findViewById(R.id.button8);
        View view9 = findViewById(R.id.button9);
        View view10 = findViewById(R.id.button10);
        View view11 = findViewById(R.id.button11);

        view.setOnTouchListener(this);
        view2.setOnTouchListener(this);
        view3.setOnTouchListener(this);
        view5.setOnTouchListener(this);
        view6.setOnTouchListener(this);
        view7.setOnTouchListener(this);
        view8.setOnTouchListener(this);
        view9.setOnTouchListener(this);
        view10.setOnTouchListener(this);
        view11.setOnTouchListener(this);

// Set the hardware buttons to control the music
        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
// Load the sound
        soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
        soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId,
                                       int status) {
                loaded = true;
            }
        });
        soundID = soundPool.load(this, R.raw.button, 1);
        


    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
// Getting the user sound settings
            AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
            float actualVolume = (float) audioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC);
            float maxVolume = (float) audioManager
                    .getStreamMaxVolume(AudioManager.STREAM_MUSIC);
            float volume = actualVolume / maxVolume;
// Is the sound loaded already?
            if (loaded) {
                soundPool.play(soundID, volume, volume, 1, 0, 1f);
                Log.e("Test", "Played sound");
            }

        }
        if (event.getAction() == MotionEvent.ACTION_UP) {

        }


        return true;
    }
}



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.drums.magicdrums.Main2Activity"
    android:background="@color/accent_material_dark">

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="150dp"
        android:layout_height="150dp"
        android:id="@+id/button"
        android:background="@drawable/ccc"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="150dp"
        android:layout_height="150dp"
        android:id="@+id/button2"
        android:background="@drawable/ccc"
        android:layout_alignTop="@+id/button"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="120dp"
        android:layout_height="120dp"
        android:id="@+id/button3"
        android:background="@drawable/ccc"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:onClick="playSoundButton6"
        android:layout_width="135dp"
        android:layout_height="135dp"
        android:id="@+id/button6"
        android:background="@drawable/zzz"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="135dp"
        android:layout_height="135dp"
        android:id="@+id/button5"
        android:background="@drawable/zzz"
        android:layout_centerVertical="true"
        android:layout_alignRight="@+id/button3"
        android:layout_alignEnd="@+id/button3"
        android:layout_marginRight="93dp"
        android:layout_marginEnd="93dp"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="135dp"
        android:layout_height="135dp"
        android:id="@+id/button7"
        android:background="@drawable/zzz"
        android:layout_alignTop="@+id/button5"
        android:layout_alignLeft="@+id/button3"
        android:layout_alignStart="@+id/button3"
        android:layout_marginLeft="97dp"
        android:layout_marginStart="97dp"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="90dp"
        android:layout_height="90dp"
        android:id="@+id/button8"
        android:background="@drawable/xxx"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="90dp"
        android:layout_height="90dp"
        android:id="@+id/button9"
        android:background="@drawable/xxx"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="90dp"
        android:layout_height="90dp"
        android:id="@+id/button10"
        android:background="@drawable/xxx"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/button8"
        android:layout_toEndOf="@+id/button8"
        android:clickable="true"/>

    <Button
        style="?android:attr/borderlessButtonStyle"

        android:layout_width="90dp"
        android:layout_height="90dp"
        android:id="@+id/button11"
        android:background="@drawable/xxx"
        android:layout_alignBottom="@+id/button9"
        android:layout_toLeftOf="@+id/button9"
        android:layout_toStartOf="@+id/button9"
        android:clickable="true"/>
</RelativeLayout>



кажется, нужно чет со строкой
Код: java
1.
        soundID = soundPool.load(this, R.raw.button, 1);

чет делать (клонировать), че делать?
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 1 из 2
Форумы / Android [игнор отключен] [закрыт для гостей] / onTouch со звуком
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]