Add default notification sounds

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2018-06-13 22:43:40 +02:00
parent 09dfd42bb7
commit e3464b65b1
6 changed files with 64 additions and 15 deletions

View File

@ -20,11 +20,13 @@
package com.nextcloud.talk.controllers; package com.nextcloud.talk.controllers;
import android.annotation.SuppressLint;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.media.RingtoneManager;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -33,6 +35,7 @@ import android.widget.TextView;
import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.RouterTransaction;
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
import com.bluelinelabs.logansquare.LoganSquare;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.LazyHeaders; import com.bumptech.glide.load.model.LazyHeaders;
@ -42,6 +45,7 @@ import com.nextcloud.talk.R;
import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.api.NcApi;
import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.controllers.base.BaseController;
import com.nextcloud.talk.models.RingtoneSettings;
import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.models.database.UserEntity;
import com.nextcloud.talk.models.json.participants.Participant; import com.nextcloud.talk.models.json.participants.Participant;
import com.nextcloud.talk.models.json.participants.ParticipantsOverall; import com.nextcloud.talk.models.json.participants.ParticipantsOverall;
@ -50,9 +54,11 @@ import com.nextcloud.talk.models.json.rooms.RoomsOverall;
import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.ApiUtils;
import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.bundle.BundleKeys;
import com.nextcloud.talk.utils.glide.GlideApp; import com.nextcloud.talk.utils.glide.GlideApp;
import com.nextcloud.talk.utils.preferences.AppPreferences;
import org.parceler.Parcels; import org.parceler.Parcels;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -69,9 +75,14 @@ import io.reactivex.schedulers.Schedulers;
@AutoInjector(NextcloudTalkApplication.class) @AutoInjector(NextcloudTalkApplication.class)
public class CallNotificationController extends BaseController { public class CallNotificationController extends BaseController {
private static final String TAG = "CallNotificationController";
@Inject @Inject
NcApi ncApi; NcApi ncApi;
@Inject
AppPreferences appPreferences;
@BindView(R.id.conversationNameTextView) @BindView(R.id.conversationNameTextView)
TextView conversationNameTextView; TextView conversationNameTextView;
@ -84,7 +95,6 @@ public class CallNotificationController extends BaseController {
private String credentials; private String credentials;
private Room currentRoom; private Room currentRoom;
private MediaPlayer mediaPlayer; private MediaPlayer mediaPlayer;
private boolean participantsCheckIsRunning;
private boolean leavingScreen = false; private boolean leavingScreen = false;
public CallNotificationController(Bundle args) { public CallNotificationController(Bundle args) {
@ -141,7 +151,6 @@ public class CallNotificationController extends BaseController {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
disposablesList.add(d); disposablesList.add(d);
participantsCheckIsRunning = true;
} }
@Override @Override
@ -219,6 +228,7 @@ public class CallNotificationController extends BaseController {
}); });
} }
@SuppressLint("LongLogTag")
@Override @Override
protected void onViewBound(@NonNull View view) { protected void onViewBound(@NonNull View view) {
super.onViewBound(view); super.onViewBound(view);
@ -227,12 +237,28 @@ public class CallNotificationController extends BaseController {
handleFromNotification(); handleFromNotification();
Uri ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); String callRingtonePreferenceString = appPreferences.getCallRingtoneUri();
Uri ringtoneUri = null;
if (TextUtils.isEmpty(callRingtonePreferenceString)) {
// play default sound
ringtoneUri = Uri.parse("android.resource://" + getApplicationContext().getPackageName()+
"/raw/librem_by_feandesign_call");
} else {
try {
RingtoneSettings ringtoneSettings = LoganSquare.parse(callRingtonePreferenceString, RingtoneSettings.class);
ringtoneUri = ringtoneSettings.getRingtoneUri();
} catch (IOException e) {
Log.e(TAG, "Failed to parse ringtone settings");
}
}
if (ringtoneUri != null) {
mediaPlayer = MediaPlayer.create(getApplicationContext(), ringtoneUri); mediaPlayer = MediaPlayer.create(getApplicationContext(), ringtoneUri);
mediaPlayer.setLooping(true); mediaPlayer.setLooping(true);
mediaPlayer.start(); mediaPlayer.start();
} }
}
private void loadAvatar() { private void loadAvatar() {
int avatarSize = Math.round(NextcloudTalkApplication int avatarSize = Math.round(NextcloudTalkApplication

View File

@ -149,7 +149,24 @@ public class RingtoneSelectionController extends BaseController implements Flexi
abstractFlexibleItemList = new ArrayList<>(); abstractFlexibleItemList = new ArrayList<>();
abstractFlexibleItemList.add(new NotificationSoundItem("None", null)); abstractFlexibleItemList.add(new NotificationSoundItem("None", null));
int positionToToggle = -1; String ringtoneString;
if (callNotificationSounds) {
ringtoneString = "android.resource://" + getApplicationContext().getPackageName() +
"/raw/librem_by_feandesign_call";
} else {
ringtoneString = "android.resource://" + getApplicationContext().getPackageName() +
"/raw/librem_by_feandesign_message";
}
abstractFlexibleItemList.add(new NotificationSoundItem(getResources()
.getString(R.string.nc_settings_default_ringtone), ringtoneString));
String preferencesString = null;
if ((TextUtils.isEmpty((preferencesString = appPreferences.getCallRingtoneUri())))
|| TextUtils.isEmpty((preferencesString = appPreferences.getMessageRingtoneUri()))) {
((NotificationSoundItem) abstractFlexibleItemList.get(1)).setSelected(true);
}
if (getActivity() != null) { if (getActivity() != null) {
RingtoneManager manager = new RingtoneManager(getActivity()); RingtoneManager manager = new RingtoneManager(getActivity());
@ -164,6 +181,7 @@ public class RingtoneSelectionController extends BaseController implements Flexi
NotificationSoundItem notificationSoundItem; NotificationSoundItem notificationSoundItem;
boolean foundDefault = false;
while (cursor.moveToNext()) { while (cursor.moveToNext()) {
String notificationTitle = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX); String notificationTitle = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX);
String notificationUri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX); String notificationUri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX);
@ -174,23 +192,23 @@ public class RingtoneSelectionController extends BaseController implements Flexi
abstractFlexibleItemList.add(notificationSoundItem); abstractFlexibleItemList.add(notificationSoundItem);
String preferencesString; if (!TextUtils.isEmpty(preferencesString) && !foundDefault) {
if (callNotificationSounds && !TextUtils.isEmpty(preferencesString = appPreferences
.getCallRingtoneUri()) ||
!callNotificationSounds && !TextUtils.isEmpty(preferencesString = appPreferences
.getMessageRingtoneUri())) {
try { try {
RingtoneSettings ringtoneSettings = LoganSquare.parse(preferencesString, RingtoneSettings.class); RingtoneSettings ringtoneSettings = LoganSquare.parse(preferencesString, RingtoneSettings.class);
if (ringtoneSettings.getRingtoneUri() == null) { if (ringtoneSettings.getRingtoneUri() == null) {
((NotificationSoundItem)abstractFlexibleItemList.get(0)).setSelected(true); ((NotificationSoundItem) abstractFlexibleItemList.get(0)).setSelected(true);
foundDefault = true;
} else if (completeNotificationUri.equals(ringtoneSettings.getRingtoneUri().toString())) { } else if (completeNotificationUri.equals(ringtoneSettings.getRingtoneUri().toString())) {
notificationSoundItem.setSelected(true); notificationSoundItem.setSelected(true);
foundDefault = true;
} else if (completeNotificationUri.equals(ringtoneString)) {
((NotificationSoundItem) abstractFlexibleItemList.get(1)).setSelected(true);
foundDefault = true;
} }
} catch (IOException e) { } catch (IOException e) {
Log.e(TAG, "Failed to parse ringtone settings"); Log.e(TAG, "Failed to parse ringtone settings");
} }
} }
} }
cursor.close(); cursor.close();

View File

@ -320,6 +320,8 @@ public class SettingsController extends BaseController {
Log.e(TAG, "Failed to parse ringtone name"); Log.e(TAG, "Failed to parse ringtone name");
} }
settingsCallSounds.setSummary(ringtoneName); settingsCallSounds.setSummary(ringtoneName);
} else {
settingsMessageSound.setSummary(R.string.nc_settings_default_ringtone);
} }
if (!TextUtils.isEmpty(appPreferences.getMessageRingtoneUri())) { if (!TextUtils.isEmpty(appPreferences.getMessageRingtoneUri())) {
@ -330,6 +332,8 @@ public class SettingsController extends BaseController {
Log.e(TAG, "Failed to parse ringtone name"); Log.e(TAG, "Failed to parse ringtone name");
} }
settingsMessageSound.setSummary(ringtoneName); settingsMessageSound.setSummary(ringtoneName);
} else {
settingsMessageSound.setSummary(R.string.nc_settings_default_ringtone);
} }
if ("No proxy".equals(appPreferences.getProxyType()) || appPreferences.getProxyType() == null) { if ("No proxy".equals(appPreferences.getProxyType()) || appPreferences.getProxyType() == null) {

Binary file not shown.

Binary file not shown.

View File

@ -65,6 +65,7 @@
<string name="nc_settings_call_ringtone_key">call_ringtone</string> <string name="nc_settings_call_ringtone_key">call_ringtone</string>
<string name="nc_settings_message_ringtone">Messages</string> <string name="nc_settings_message_ringtone">Messages</string>
<string name="nc_settings_message_ringtone_key">message_ringtone</string> <string name="nc_settings_message_ringtone_key">message_ringtone</string>
<string name="nc_settings_default_ringtone" translatable="false">Librem by feandesign</string>
<string name="nc_no_proxy">No proxy</string> <string name="nc_no_proxy">No proxy</string>
<string name="nc_username">Username</string> <string name="nc_username">Username</string>