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

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

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

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

16.03.2015, 17:02. Просмотров 308. Ответов 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
Доброго времени суток! Не могу заставить воспроизвести звук... перепробовал сотни вариантов... вот самый простой: 1. Закинул в папку...

Какой метод срабатывает при повторном показе фрагмента - Программирование Android
Доброго... Имею несколько фрагментов, работаю с ними так: if (fragmentManager.findFragmentByTag(String.valueOf(idQuestion)) !=...

Как реализовать воспроизведение стрим видео? - Программирование Android
Здравствуйте, столкнулся с такой проблемой: есть ccылка на поток с камеры наблюдения в формате http, пример:...

Авто-воспроизведение сообщения "разговор записывается" - Программирование Android
Здравствуйте! Подскажите, существует ли приложение или может его можно сделать, чтобы при ответе на звонок первым делом воспроизводился...

Реализовать захват звука с микрофона и его воспроизведение - Delphi
Мне необходимо реализовать захват звука с микрофона и его воспроизведение. Набросал такой код по этой статье:...

Воспроизведение звука при нажатии на клавиши, при работе программы в фоновом режиме - Visual Basic .NET
Нужно написать программу, воспроизводящую звук при нажатии на любую клавишу. Только нужно что бы программа работала в фоновом режиме, т.е....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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();
    }
Не знаешь как реализовать что он срабатывал в заданное время, например введенное время пользователем?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2015, 19:56
Привет! Вот еще темы с ответами:

Воспроизведение звука при нажатии button - Visual C++
Подскажите, пожалуйста, код, когда при нажатии button воспроизводится нужный мне звуковой файл (Visual 2008, MFC, на базе блока диалога)

Ошибка при воспроизведение звука кнопки - C++/CLI WinForms
выдает такую ошибку, когда нажимаю на кнопку : An unhandled exception of type 'System.IO.FileNotFoundException' occurred in System.dll...

Воспроизведение звука при нажатии на клавишу - Turbo Pascal
КонецСвета, Спасибо большое) Всё работает) Рад очень помощи) Но вот думаю может поможешь а то тоже в тупик зашел короче нужно сделать...

Воспроизведение звука при открытии формы - Visual Basic .NET
можно ли реализовать данную задачу? при открытии формы будет воспроизводиться звук, при закрытии-прекращаться.


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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