Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
iandryxa5
1 / 1 / 0
Регистрация: 22.03.2014
Сообщений: 170
#1

Реализовать воспроизведение звука при каждом показе сообщения - Android

16.03.2015, 17:02. Просмотров 258. Ответов 2
Метки нет (Все метки)

Всем привет)
Возник такой вопрос в ходе программирования будильника, есть следующий код с использованием BroadcastReceiver.
MainActivity
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
package com.develop.iandryxa.firstalarm;
 
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
 
public class MainActivity extends ActionBarActivity {
 
 
    private TimeBroadcastReceiver broadcastReceiver = new TimeBroadcastReceiver();
 
    Button mButtonRegister, mButtonUnregister;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mButtonRegister = (Button)findViewById(R.id.register);
        mButtonRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                registerBroadcastReceiver();
            }
        });
        mButtonUnregister = (Button)findViewById(R.id.cancel);
        mButtonUnregister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                unregisterBroadcastReceiver();
            }
        });
 
 
    }
 
 
 
    public void registerBroadcastReceiver(){
        this.registerReceiver(broadcastReceiver, new IntentFilter(
                "android.intent.action.TIME_TICK"));
        Toast.makeText(getApplication(), "Приемник включен", Toast.LENGTH_SHORT).show();
    }
 
    /*
    отмеяем регисрацию
     */
    public void unregisterBroadcastReceiver(){
        this.unregisterReceiver(broadcastReceiver);
        Toast.makeText(getApplicationContext(), "Приемник выключен ", Toast.LENGTH_SHORT).show();
    }
 
 
}
TimeBroadcastReceiver
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
package com.develop.iandryxa.firstalarm;
 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.SoundPool;
import android.widget.Toast;
 
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
 
 
public class TimeBroadcastReceiver extends BroadcastReceiver {
 
    
 
    public TimeBroadcastReceiver() {
    }
 
    @Override
    public void onReceive(Context context, Intent intent) {
 
        StringBuilder strBuild = new StringBuilder("Текущее время: ");
        Format formatter = new SimpleDateFormat("hh:mm:ss a");
        strBuild.append(formatter.format(new Date()));
        Toast.makeText(context, strBuild, Toast.LENGTH_SHORT).show();
 
 
 
 
    }
}
То есть по нажатию кнопки mButtonRegister запускается широковещательный интент и каждую минуту выводится сообщение с текущей датой, так вот вопрос, как реализовать воспроизведение какого-либо звука при каждом показе сообщения, то есть код запуска должен располагаться в методе регистрации интента или же в onReceive()?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2015, 17:02     Реализовать воспроизведение звука при каждом показе сообщения
Посмотрите здесь:

Android Воспроизведение аудио
Android Воспроизведение звука (ничего не получается)
Воспроизведение музыки при выключенном звуке Android
Android Как реализовать Синхронное выполнение двух функций при вызове AsyncTask
Воспроизведение видео в SurfaceView Android
Android Какой метод срабатывает при повторном показе фрагмента
Android Остановка / воспроизведение аудио
Вызов метода при каждом открытии приложения Android
Авто-воспроизведение сообщения "разговор записывается" Android
Как реализовать автозапуск приложения при включении устройства? Basic4Android
Воспроизведение рандомной песни при нажатии на картинку Android
Задержка звука при стриме по wifi Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
name?
 Аватар для name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
16.03.2015, 17:18     Реализовать воспроизведение звука при каждом показе сообщения #2
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
208
209
210
211
212
213
214
215
216
217
218
219
220
package app.test;
 
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
 
class ActivityToast extends Activity {
 
  OnClickListener listener1 = null;
  OnClickListener listener2 = null;
  Button button1;
  Button button2;
  private static int NOTIFICATIONS_ID = R.layout.activity_toast;
 
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    listener1 = new OnClickListener() {
      public void onClick(View v) {
        setTitle("Toast");
        showToast(Toast.LENGTH_SHORT);
 
      }
    };
    listener2 = new OnClickListener() {
      public void onClick(View v) {
        setTitle("Toast");
        showToast(Toast.LENGTH_LONG);
        showNotification();
      }
    };
    setContentView(R.layout.activity_toast);
    button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(listener1);
    button2 = (Button) findViewById(R.id.button2);
    button2.setOnClickListener(listener2);
  }
 
  protected void showToast(int type) {
 
    View view = inflateView(R.layout.toast);
 
    TextView tv = (TextView) view.findViewById(R.id.content);
    tv.setText("aaa");
 
    Toast toast = new Toast(this);
    toast.setView(view);
    toast.setDuration(type);
    toast.show();
  }
 
  private View inflateView(int resource) {
    LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    return vi.inflate(resource, null);
  }
 
  protected void showNotification() {
 
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
 
    CharSequence title = "asdf";
    CharSequence contents = "yourHost.com";
 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
        new Intent(this, ActivityMain.class), 0);
 
    Notification notification = new Notification(R.drawable.icon,
        title, System.currentTimeMillis());
 
    notification.setLatestEventInfo(this, title, contents, contentIntent);
    notification.vibrate = new long[] { 100, 250, 100, 500 };
 
    notificationManager.notify(NOTIFICATIONS_ID, notification);
  }
}
 
class ActivityMainNotification extends Activity {
  private static int NOTIFICATIONS_ID = R.layout.activity_notification;
  private NotificationManager mNotificationManager;
 
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_notification);
 
    Button button;
 
    mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
 
    button = (Button) findViewById(R.id.sun_1);
    button.setOnClickListener(new Button.OnClickListener() {
      public void onClick(View v) {
        setWeather("A", "B", "C", R.drawable.sun);
      }
    });
 
    button = (Button) findViewById(R.id.cloudy_1);
    button.setOnClickListener(new Button.OnClickListener() {
      public void onClick(View v) {
        setWeather("A", "B", "C",
            R.drawable.cloudy);
      }
    });
 
    button = (Button) findViewById(R.id.rain_1);
    button.setOnClickListener(new Button.OnClickListener() {
      public void onClick(View v) {
        setWeather("A", "B", "C", R.drawable.rain);
      }
    });
 
    button = (Button) findViewById(R.id.defaultSound);
    button.setOnClickListener(new Button.OnClickListener() {
      public void onClick(View v) {
        setDefault(Notification.DEFAULT_SOUND);
      }
    });
 
    button = (Button) findViewById(R.id.defaultVibrate);
    button.setOnClickListener(new Button.OnClickListener() {
      public void onClick(View v) {
        setDefault(Notification.DEFAULT_VIBRATE);
      }
    });
 
    button = (Button) findViewById(R.id.defaultAll);
    button.setOnClickListener(new Button.OnClickListener() {
      public void onClick(View v) {
        setDefault(Notification.DEFAULT_ALL);
      }
    });
 
    button = (Button) findViewById(R.id.clear);
    button.setOnClickListener(new Button.OnClickListener() {
      public void onClick(View v) {
        mNotificationManager.cancel(NOTIFICATIONS_ID);
      }
    });
 
  }
 
  private void setWeather(String tickerText, String title, String content,
      int drawable) {
 
    Notification notification = new Notification(drawable, tickerText,
        System.currentTimeMillis());
 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
        new Intent(this, ActivityMain.class), 0);
 
    notification.setLatestEventInfo(this, title, content, contentIntent);
 
    mNotificationManager.notify(NOTIFICATIONS_ID, notification);
  }
 
  private void setDefault(int defaults) {
 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
        new Intent(this, ActivityMain.class), 0);
 
    String title = "t";
    String content = "c";
 
    final Notification notification = new Notification(R.drawable.sun,
        content, System.currentTimeMillis());
 
    notification.setLatestEventInfo(this, title, content, contentIntent);
 
    notification.defaults = defaults;
 
    mNotificationManager.notify(NOTIFICATIONS_ID, notification);
  }
}
 
public class ActivityMain extends Activity {
 
  OnClickListener listener1 = null;
  OnClickListener listener2 = null;
 
  Button button1;
  Button button2;
 
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    listener1 = new OnClickListener() {
      public void onClick(View v) {
        setTitle("Notification");
        Intent intent = new Intent(ActivityMain.this,
            ActivityMainNotification.class);
        startActivity(intent);
 
      }
    };
    listener2 = new OnClickListener() {
      public void onClick(View v) {
        setTitle("Toast");
        Intent intent = new Intent(ActivityMain.this,
            ActivityToast.class);
        startActivity(intent);
 
      }
    };
    setContentView(R.layout.main);
    button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(listener1);
    button2 = (Button) findViewById(R.id.button2);
    button2.setOnClickListener(listener2);
  }
}
main.xml
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <Button android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:text="Notification" />
  <Button android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:text="Toast" />
</LinearLayout>
//toast.xml
 
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:drawable/toast_frame">
 
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/default_icon"
                />
 
            <TextView
                android:id="@+id/content"
                android:layout_gravity="center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="6dip"
                />
 
    </LinearLayout>
</FrameLayout>
activity_toast.xml
XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <Button android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:text="Short Toast" />
  <Button android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:text="Long Toast" />
</LinearLayout>
activity_notification.xml
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
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
            
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        
            <Button
                android:id="@+id/sun_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="A" />
        
            <Button
                android:id="@+id/cloudy_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="B" />
                
              <Button
                android:id="@+id/rain_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="C" />
                
        </LinearLayout>
        
         <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dip"
            android:text="Advanced notification" />
 
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        
            <Button
                android:id="@+id/defaultSound"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Sound notification" />
        
            <Button
                android:id="@+id/defaultVibrate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Vibarate notification" />
                
              <Button
                android:id="@+id/defaultAll"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Vibrate and Sound notification" />
                
        </LinearLayout>
        
        <Button android:id="@+id/clear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dip"
            android:text="Remove notification" />
            
    </LinearLayout>
 
</ScrollView>
iandryxa5
1 / 1 / 0
Регистрация: 22.03.2014
Сообщений: 170
16.03.2015, 19:56  [ТС]     Реализовать воспроизведение звука при каждом показе сообщения #3
name?, ага спасибо большое за наводку, разобрался)
И по ходу у меня еще один вопрос возник, вот смотри когда мы регистрируем интент, то мы указываем, чтобы он срабатывал через минуту("android.intent.action.TIME_TICK")
Java
1
2
3
4
5
public void registerBroadcastReceiver(){
        this.registerReceiver(broadcastReceiver, new IntentFilter(
                "android.intent.action.TIME_TICK"));
        Toast.makeText(getApplication(), "Приемник включен", Toast.LENGTH_SHORT).show();
    }
Не знаешь как реализовать что он срабатывал в заданное время, например введенное время пользователем?
Yandex
Объявления
16.03.2015, 19:56     Реализовать воспроизведение звука при каждом показе сообщения
Ответ Создать тему
Опции темы

Текущее время: 07:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru