diff --git a/res/menu/redphone_audio_popup_menu.xml b/res/menu/redphone_audio_popup_menu.xml new file mode 100644 index 0000000000..201e80e8ae --- /dev/null +++ b/res/menu/redphone_audio_popup_menu.xml @@ -0,0 +1,16 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/org/thoughtcrime/redphone/audio/OutgoingRinger.java b/src/org/thoughtcrime/redphone/audio/OutgoingRinger.java index 4dba2ed39a..dd2e27bc6b 100644 --- a/src/org/thoughtcrime/redphone/audio/OutgoingRinger.java +++ b/src/org/thoughtcrime/redphone/audio/OutgoingRinger.java @@ -140,12 +140,14 @@ public class OutgoingRinger implements MediaPlayer.OnCompletionListener, public void onPrepared(MediaPlayer mp) { mediaPlayer.setLooping(loopEnabled); -// AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); -// if (am.isBluetoothScoAvailableOffCall() -// && ApplicationPreferencesActivity.getBluetoothEnabled(context)) { -// am.startBluetoothSco(); -// am.setBluetoothScoOn(true); -// } + + AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); + + if (am.isBluetoothScoAvailableOffCall()) { + am.startBluetoothSco(); + am.setBluetoothScoOn(true); + } + mediaPlayer.start(); } } diff --git a/src/org/thoughtcrime/redphone/ui/CallControls.java b/src/org/thoughtcrime/redphone/ui/CallControls.java index 262dd10654..b63ffe6a3f 100644 --- a/src/org/thoughtcrime/redphone/ui/CallControls.java +++ b/src/org/thoughtcrime/redphone/ui/CallControls.java @@ -20,7 +20,6 @@ package org.thoughtcrime.redphone.ui; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.graphics.Color; import android.media.AudioManager; import android.os.Handler; import android.os.Message; @@ -209,9 +208,9 @@ public class CallControls extends RelativeLayout { audioButton.setAudioMode(AudioUtils.getCurrentAudioMode(getContext())); // if(ApplicationPreferencesActivity.getBluetoothEnabled(getContext())) { -// IntentFilter filter = new IntentFilter(); -// filter.addAction(AudioUtils.getScoUpdateAction()); -// handleBluetoothIntent(getContext().registerReceiver(null, filter)); + IntentFilter filter = new IntentFilter(); + filter.addAction(AudioUtils.getScoUpdateAction()); + handleBluetoothIntent(getContext().registerReceiver(null, filter)); // } } @@ -226,12 +225,12 @@ public class CallControls extends RelativeLayout { } Integer state = intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -1); -// if (state.equals(AudioManager.SCO_AUDIO_STATE_CONNECTED) + if (state.equals(AudioManager.SCO_AUDIO_STATE_CONNECTED)) { // && ApplicationPreferencesActivity.getBluetoothEnabled(getContext())) { -// audioButton.setHeadsetAvailable(true); -// } else if (state.equals(AudioManager.SCO_AUDIO_STATE_DISCONNECTED)) { + audioButton.setHeadsetAvailable(true); + } else if (state.equals(AudioManager.SCO_AUDIO_STATE_DISCONNECTED)) { audioButton.setHeadsetAvailable(false); -// } + } } diff --git a/src/org/thoughtcrime/redphone/ui/InCallAudioButton.java b/src/org/thoughtcrime/redphone/ui/InCallAudioButton.java index 5eb821316c..015fdfb06a 100644 --- a/src/org/thoughtcrime/redphone/ui/InCallAudioButton.java +++ b/src/org/thoughtcrime/redphone/ui/InCallAudioButton.java @@ -3,12 +3,11 @@ package org.thoughtcrime.redphone.ui; import android.content.Context; import android.graphics.drawable.LayerDrawable; import android.support.v7.internal.view.menu.MenuBuilder; -import android.support.v7.internal.view.menu.MenuPopupHelper; +import android.support.v7.widget.PopupMenu; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.CompoundButton; -import android.widget.PopupMenu; import org.thoughtcrime.redphone.util.AudioUtils; import org.thoughtcrime.securesms.R; @@ -30,9 +29,9 @@ import static org.thoughtcrime.redphone.util.AudioUtils.AudioMode.SPEAKER; */ public class InCallAudioButton { private static final String TAG = InCallAudioButton.class.getName(); - private static final int HANDSET_ID = 0x10; - private static final int HEADSET_ID = 0x20; - private static final int SPEAKER_ID = 0x30; +// private static final int HANDSET_ID = 0x10; +// private static final int HEADSET_ID = 0x20; +// private static final int SPEAKER_ID = 0x30; private final CompoundButton mAudioButton; private boolean headsetAvailable; @@ -160,32 +159,62 @@ public class InCallAudioButton { } private void displayAudioChoiceDialog() { - MenuBuilder mb = new MenuBuilder(context); - mb.add(0, HANDSET_ID, 0, "Handset"); - mb.add(0, HEADSET_ID, 0, "Headset"); - mb.add(0, SPEAKER_ID, 0, "Speaker"); - mb.setCallback(new AudioRoutingPopupListener()); - - View attachmentView = ((View) mAudioButton.getParent()).findViewById(R.id.menuAttachment); - PopupMenu popupMenu = new PopupMenu(context, attachmentView); +// MenuBuilder mb = new MenuBuilder(context); +// mb.add(0, HANDSET_ID, 0, "Handset"); +// mb.add(0, HEADSET_ID, 0, "Headset"); +// mb.add(0, SPEAKER_ID, 0, "Speaker"); +// mb.setCallback(new AudioRoutingPopupListener()); + +// View attachmentView = ((View) mAudioButton.getParent()).findViewById(R.id.menuAttachment); + Log.w(TAG, "Displaying popup..."); + PopupMenu popupMenu = new PopupMenu(context, mAudioButton); + popupMenu.getMenuInflater().inflate(R.menu.redphone_audio_popup_menu, popupMenu.getMenu()); + popupMenu.setOnMenuItemClickListener(new AudioRoutingPopupListener()); popupMenu.show(); // MenuPopupHelper mph = new MenuPopupHelper(context, mb, attachmentView); // // mph.show(); } - private class AudioRoutingPopupListener implements MenuBuilder.Callback { + private class AudioRoutingPopupListener implements PopupMenu.OnMenuItemClickListener { + +// @Override +// public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { +// switch (item.getItemId()) { +// case HANDSET_ID: +// currentMode = DEFAULT; +// break; +// case HEADSET_ID: +// currentMode = HEADSET; +// break; +// case SPEAKER_ID: +// currentMode = SPEAKER; +// break; +// default: +// Log.w(TAG, "Unknown item selected in audio popup menu: " + item.toString()); +// } +// Log.d(TAG, "Selected: " + currentMode + " -- " + item.getItemId()); +// +// listener.onAudioChange(currentMode); +// updateView(); +// return true; +// } +// +// @Override +// public void onMenuModeChange(MenuBuilder menu) { +// //To change body of implemented methods use File | Settings | File Templates. +// } @Override - public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { + public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { - case HANDSET_ID: + case R.id.handset: currentMode = DEFAULT; break; - case HEADSET_ID: + case R.id.headset: currentMode = HEADSET; break; - case SPEAKER_ID: + case R.id.speaker: currentMode = SPEAKER; break; default: @@ -197,11 +226,5 @@ public class InCallAudioButton { updateView(); return true; } - - @Override - public void onMenuModeChange(MenuBuilder menu) { - //To change body of implemented methods use File | Settings | File Templates. - } - } } diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java b/src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java index e2ec170290..28aed79a86 100644 --- a/src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java +++ b/src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java @@ -38,6 +38,6 @@ public class GeneratedContactPhoto implements ContactPhoto { @Override public Drawable asCallCard(Context context) { - return context.getDrawable(R.drawable.ic_contact_picture); + return context.getResources().getDrawable(R.drawable.ic_contact_picture); } } diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/ResourceContactPhoto.java b/src/org/thoughtcrime/securesms/contacts/avatars/ResourceContactPhoto.java index f0c0b3d8e6..6a52d4f074 100644 --- a/src/org/thoughtcrime/securesms/contacts/avatars/ResourceContactPhoto.java +++ b/src/org/thoughtcrime/securesms/contacts/avatars/ResourceContactPhoto.java @@ -42,7 +42,7 @@ public class ResourceContactPhoto implements ContactPhoto { @Override public Drawable asCallCard(Context context) { - return context.getDrawable(resourceId); + return context.getResources().getDrawable(resourceId); } private static class ExpandingLayerDrawable extends LayerDrawable { diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/TransparentContactPhoto.java b/src/org/thoughtcrime/securesms/contacts/avatars/TransparentContactPhoto.java index f4f59782d1..d5c408528e 100644 --- a/src/org/thoughtcrime/securesms/contacts/avatars/TransparentContactPhoto.java +++ b/src/org/thoughtcrime/securesms/contacts/avatars/TransparentContactPhoto.java @@ -23,6 +23,6 @@ public class TransparentContactPhoto implements ContactPhoto { @Override public Drawable asCallCard(Context context) { - return context.getDrawable(R.drawable.ic_contact_picture); + return context.getResources().getDrawable(R.drawable.ic_contact_picture); } }