Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / onTouch со звуком / 25 сообщений из 50, страница 1 из 2
05.07.2016, 16:13
    #39268118
ilja2210
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
всем привет!
хочу,чтоб при касании кнопки звучал короткий звук из 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
05.07.2016, 21:17
    #39268342
ilja2210
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
попробовал так оформить активити...выдает ошибку на
Код: 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
05.07.2016, 22:28
    #39268363
ilja2210
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
ребяяят, ну посоветуйте хоть статью какую...дня три уже копаюсь((
...
Рейтинг: 0 / 0
06.07.2016, 12:08
    #39268669
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
может какие то основы почитать ?
а то , не понимание как работать с тем же
...
Рейтинг: 0 / 0
06.07.2016, 12:36
    #39268709
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
ilja2210,

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

это к тому не относится...пока-что))
...
Рейтинг: 0 / 0
06.07.2016, 13:20
    #39268770
ilja2210
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
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
06.07.2016, 14:35
    #39268899
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
1. мы должны гадать по поводу ошибки ?
2. подсказки IDE как бы тебе говорят что можно сделать. если наведешь или кликнешь на красный/желтый кружечек то поскажет что можно сделать или кликнув по пункту он сам сделает за тебя
...
Рейтинг: 0 / 0
06.07.2016, 14:52
    #39268930
ilja2210
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
Джибс,

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

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


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

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

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

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

тут вот застопорился
...
Рейтинг: 0 / 0
07.07.2016, 09:14
    #39269429
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
ilja2210тупо, вот и прошу помощи)
Если хочешь помощи по ошибке, то без её текста проблемно будет помочь.
...
Рейтинг: 0 / 0
07.07.2016, 10:01
    #39269461
ilja2210
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
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
07.07.2016, 11:38
    #39269563
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
ilja2210Error:Execution failed for task ':app:mergeDebugResources'.
Дак ресурсы у тебя кривые... Вспоминай, что добавлял или менял в последнее время.
...
Рейтинг: 0 / 0
07.07.2016, 12:50
    #39269650
ilja2210
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
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
07.07.2016, 13:41
    #39269749
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
а подумать ?

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

теперь все работает. Только чет не врубаюсь, как сделать так, чтобы при 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
07.07.2016, 13:59
    #39269770
Джибс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
ilja2210Только чет не врубаюсь, как сделать так, чтобы при ACTION_UP ниче не звучало)

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

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

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

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

теперь проблема-хз, как добавить поддержку остальных кнопок((
тут совсем туго
...
Рейтинг: 0 / 0
08.07.2016, 15:15
    #39270664
ilja2210
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
onTouch со звуком
Код: 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
Форумы / Android [игнор отключен] [закрыт для гостей] / onTouch со звуком / 25 сообщений из 50, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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