summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Stefani <luca020400@lineageos.org>2017-10-07 18:33:53 +0200
committerBruno Martins <bgcngm@gmail.com>2018-11-20 10:17:35 +0000
commit0d861236478744f06efa2f61f1d0395c48d52f2e (patch)
tree08c3ee8c05a903a70ac97d829249c8d950a8400a
parente756fdc7241f658e38ef4c117bfa8529e4f07cc3 (diff)
downloadandroid_packages_apps_Gallery2-0d861236478744f06efa2f61f1d0395c48d52f2e.tar.gz
android_packages_apps_Gallery2-0d861236478744f06efa2f61f1d0395c48d52f2e.tar.bz2
android_packages_apps_Gallery2-0d861236478744f06efa2f61f1d0395c48d52f2e.zip
Gallery: Kill media effect dialog on movies
* It doesn't work and we have an external app for that Change-Id: I90d4f548d76b7e73815bb811de0377de7c23708e
-rwxr-xr-xres/drawable-hdpi/knob.pngbin5435 -> 0 bytes
-rw-r--r--res/drawable-hdpi/knob_toggle_off.pngbin3071 -> 0 bytes
-rw-r--r--res/drawable-hdpi/knob_toggle_on.pngbin3218 -> 0 bytes
-rwxr-xr-xres/drawable-hdpi/switch_thumb_activated.pngbin2594 -> 0 bytes
-rw-r--r--res/drawable-hdpi/switch_thumb_activated_holo_dark.9.pngbin549 -> 0 bytes
-rwxr-xr-xres/drawable-hdpi/switch_thumb_off.pngbin2549 -> 0 bytes
-rw-r--r--res/drawable-mdpi/switch_thumb_activated_holo_dark.9.pngbin351 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/switch_thumb_activated_holo_dark.9.pngbin653 -> 0 bytes
-rw-r--r--res/drawable/switch_inner_holo_dark.xml22
-rw-r--r--res/layout/audio_effects_dialog.xml98
-rw-r--r--res/layout/audio_effects_title.xml62
-rw-r--r--res/layout/knob.xml75
-rw-r--r--res/values/attrs.xml4
-rw-r--r--res/values/codeaurora_strings.xml8
-rwxr-xr-xsrc/com/android/gallery3d/app/MovieActivity.java285
-rwxr-xr-xsrc/com/android/gallery3d/app/MoviePlayer.java4
-rw-r--r--src/com/android/gallery3d/ui/Knob.java338
17 files changed, 1 insertions, 895 deletions
diff --git a/res/drawable-hdpi/knob.png b/res/drawable-hdpi/knob.png
deleted file mode 100755
index 213c20010..000000000
--- a/res/drawable-hdpi/knob.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/knob_toggle_off.png b/res/drawable-hdpi/knob_toggle_off.png
deleted file mode 100644
index a89595e2b..000000000
--- a/res/drawable-hdpi/knob_toggle_off.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/knob_toggle_on.png b/res/drawable-hdpi/knob_toggle_on.png
deleted file mode 100644
index ab8d3d7e3..000000000
--- a/res/drawable-hdpi/knob_toggle_on.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/switch_thumb_activated.png b/res/drawable-hdpi/switch_thumb_activated.png
deleted file mode 100755
index 5d6c7d8eb..000000000
--- a/res/drawable-hdpi/switch_thumb_activated.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/switch_thumb_activated_holo_dark.9.png b/res/drawable-hdpi/switch_thumb_activated_holo_dark.9.png
deleted file mode 100644
index 9c5147efc..000000000
--- a/res/drawable-hdpi/switch_thumb_activated_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/switch_thumb_off.png b/res/drawable-hdpi/switch_thumb_off.png
deleted file mode 100755
index 733cef674..000000000
--- a/res/drawable-hdpi/switch_thumb_off.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/switch_thumb_activated_holo_dark.9.png b/res/drawable-mdpi/switch_thumb_activated_holo_dark.9.png
deleted file mode 100644
index 3d7c236ab..000000000
--- a/res/drawable-mdpi/switch_thumb_activated_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/switch_thumb_activated_holo_dark.9.png b/res/drawable-xhdpi/switch_thumb_activated_holo_dark.9.png
deleted file mode 100644
index ca48bd866..000000000
--- a/res/drawable-xhdpi/switch_thumb_activated_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/switch_inner_holo_dark.xml b/res/drawable/switch_inner_holo_dark.xml
deleted file mode 100644
index c0b00bb83..000000000
--- a/res/drawable/switch_inner_holo_dark.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_enabled="false" android:drawable="@drawable/switch_thumb_disabled_holo_dark" />
- <item android:state_pressed="true" android:drawable="@drawable/switch_thumb_pressed_holo_dark" />
- <item android:state_checked="true" android:drawable="@drawable/switch_thumb_activated_holo_dark" />
- <item android:drawable="@drawable/switch_thumb_holo_dark" />
-</selector>
diff --git a/res/layout/audio_effects_dialog.xml b/res/layout/audio_effects_dialog.xml
deleted file mode 100644
index ac7c85b82..000000000
--- a/res/layout/audio_effects_dialog.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (c) 2013, 2016, The Linux Foundation. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of The Linux Foundation nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:custom="http://schemas.android.com/apk/res/org.codeaurora.gallery"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center">
-
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center_horizontal"
- android:layout_marginStart="12dp"
- android:layout_marginEnd="12dp">
-
- <RelativeLayout
- android:id="@+id/aEffectsPanel"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="12dp"
- android:layout_marginBottom="10dp"
- android:gravity="center_vertical">
-
- <RelativeLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="24dp"
- android:layout_weight="1">
- <com.android.gallery3d.ui.Knob
- android:id="@+id/bBStrengthKnob"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- custom:foreground="@drawable/knob"/>
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- android:layout_below="@id/bBStrengthKnob"
- android:layout_marginTop="12dp"
- android:textColor="@android:color/black"
- android:text="@string/bass_boost_strength"/>
- </RelativeLayout>
-
- <RelativeLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginEnd="12dp"
- android:layout_alignParentRight="true"
- android:layout_weight="1">
- <com.android.gallery3d.ui.Knob
- android:id="@+id/vIStrengthKnob"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- custom:foreground="@drawable/knob"/>
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@id/vIStrengthKnob"
- android:layout_marginTop="12dp"
- android:layout_centerHorizontal="true"
- android:textColor="@android:color/black"
- android:text="@string/virtualizer_strength"/>
- </RelativeLayout>
- </RelativeLayout>
- </LinearLayout>
-</LinearLayout>
diff --git a/res/layout/audio_effects_title.xml b/res/layout/audio_effects_title.xml
deleted file mode 100644
index 6822fdf2b..000000000
--- a/res/layout/audio_effects_title.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (c) 2014, 2016, The Linux Foundation. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of The Linux Foundation nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:custom="http://schemas.android.com/apk/res/com.android.gallery3d"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:gravity="left|center_vertical">
-
- <TextView
- android:text="@string/audio_effects"
- android:gravity="left|center_vertical"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="24dp"
- android:layout_marginTop="10dp"
- android:layout_marginBottom="10dp"
- android:textColor="@android:color/black"
- android:textSize="20dp" />
-
- <View
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1" />
-
- <ToggleButton
- android:id="@+id/audio_effects_switch"
- android:textOn=""
- android:textOff=""
- android:background="@null"
- android:gravity="center_vertical|right"
- android:layout_width="72dp"
- android:layout_height="34dp"/>
-</LinearLayout>
diff --git a/res/layout/knob.xml b/res/layout/knob.xml
deleted file mode 100644
index d504774e7..000000000
--- a/res/layout/knob.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (c) 2013, The Linux Foundation. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of The Linux Foundation nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
-
- <ImageView
- android:id="@+id/knob_foreground"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- <ImageView
- android:id="@+id/knob_toggle_on"
- android:layout_gravity="center_horizontal|center_vertical"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/knob_toggle_on"
- android:visibility="gone" />
- <ImageView
- android:id="@+id/knob_toggle_off"
- android:layout_gravity="center_horizontal|center_vertical"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/knob_toggle_off"
- android:visibility="gone" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center_horizontal"
- android:orientation="vertical"
- android:gravity="center_horizontal">
-
- <TextView
- android:id="@+id/knob_value"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:visibility="gone" />
- <TextView
- android:id="@+id/knob_label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:ellipsize="marquee"
- android:visibility="gone" />
- </LinearLayout>
-
-</FrameLayout>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 52ac78ff9..7dde02172 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -37,10 +37,6 @@
<attr name="largeIcons" format="reference" />
<attr name="images" format="reference" />
</declare-styleable>
- <declare-styleable name="Knob">
- <attr name="label" format="string" />
- <attr name="foreground" format="integer" />
- </declare-styleable>
<declare-styleable name="FillColor">
<attr name="fillColorSelector" format="color" />
</declare-styleable>
diff --git a/res/values/codeaurora_strings.xml b/res/values/codeaurora_strings.xml
index 4aa1ba275..b6f5a739c 100644
--- a/res/values/codeaurora_strings.xml
+++ b/res/values/codeaurora_strings.xml
@@ -92,17 +92,9 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<item quantity="other">%1$d videos</item>
</plurals>
- <!-- The label for the bass boost knob of the audio effects dialog. -->
- <string name="bass_boost_strength">Bass boost</string>
- <!-- The label for the 3d effect knob of the audio effects dialog. -->
- <string name="virtualizer_strength">3D effect</string>
- <!-- The label for the audio effects menu. -->
- <string name="audio_effects">Audio effects</string>
- <!-- Toast if user attempts to control audio effects without headphones plugged in. -->
- <string name="headset_plug">Plug in headphones for these effects.</string>
<!-- Toast message for share items -->
<string name="cannot_share_items">Max selected items for share is 300</string>
diff --git a/src/com/android/gallery3d/app/MovieActivity.java b/src/com/android/gallery3d/app/MovieActivity.java
index ca6eeffcf..4bfc13a7a 100755
--- a/src/com/android/gallery3d/app/MovieActivity.java
+++ b/src/com/android/gallery3d/app/MovieActivity.java
@@ -19,19 +19,14 @@ package com.android.gallery3d.app;
import android.annotation.TargetApi;
import android.app.ActionBar;
import android.app.ActionBar.OnMenuVisibilityListener;
-import android.app.AlertDialog;
import android.app.KeyguardManager;
-import android.bluetooth.BluetoothClass;
-import android.bluetooth.BluetoothDevice;
import android.content.AsyncQueryHandler;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
-import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.database.Cursor;
//import android.drm.DrmHelper;
@@ -39,44 +34,30 @@ import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
-import android.media.AudioManager;
-import android.media.audiofx.AudioEffect;
-import android.media.audiofx.AudioEffect.Descriptor;
-import android.media.audiofx.BassBoost;
-import android.media.audiofx.Virtualizer;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
-import android.os.SystemProperties;
import android.provider.MediaStore;
import android.provider.OpenableColumns;
-import android.view.Gravity;
import android.view.KeyEvent;
-import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
-import android.widget.CompoundButton;
import android.widget.ImageView;
-import android.widget.ToggleButton;
-import android.widget.Toast;
import org.codeaurora.gallery.R;
import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.common.Utils;
-import com.android.gallery3d.ui.Knob;
import org.codeaurora.gallery3d.ext.IActivityHooker;
import org.codeaurora.gallery3d.ext.IMovieItem;
import org.codeaurora.gallery3d.ext.MovieItem;
import org.codeaurora.gallery3d.ext.MovieUtils;
import org.codeaurora.gallery3d.video.ExtensionHelper;
import org.codeaurora.gallery3d.video.MovieTitleHelper;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothProfile;
/**
* This activity plays a video from a specified URI.
@@ -101,27 +82,8 @@ public class MovieActivity extends AbstractPermissionActivity {
private boolean mFinishOnCompletion;
private Uri mUri;
private ImageView mLiveImg;
+ private boolean mUserPresentReceived = false;
- private static final short BASSBOOST_MAX_STRENGTH = 1000;
- private static final short VIRTUALIZER_MAX_STRENGTH = 1000;
-
- private boolean mIsHeadsetOn = false;
- private boolean mVirtualizerSupported = false;
- private boolean mBassBoostSupported = false;
- private boolean mUserPresentReceived = false;
-
- static enum Key {
- global_enabled, bb_strength, virt_strength
- };
-
- private BassBoost mBassBoostEffect;
- private Virtualizer mVirtualizerEffect;
- private AlertDialog mEffectDialog;
- private ToggleButton mSwitch;
- private Knob mBassBoostKnob;
- private Knob mVirtualizerKnob;
-
- private SharedPreferences mPrefs;
private IMovieItem mMovieItem;
private IActivityHooker mMovieHooker;
private KeyguardManager mKeyguardManager;
@@ -132,39 +94,6 @@ public class MovieActivity extends AbstractPermissionActivity {
private Intent mShareIntent;
- private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(final Context context, final Intent intent) {
- final String action = intent.getAction();
- final AudioManager audioManager =
- (AudioManager) getSystemService(Context.AUDIO_SERVICE);
- if (action.equals(Intent.ACTION_HEADSET_PLUG)) {
- mIsHeadsetOn = (intent.getIntExtra("state", 0) == 1)
- || audioManager.isBluetoothA2dpOn();
- } else if (action.equals(BluetoothDevice.ACTION_ACL_CONNECTED)
- || action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) {
- final BluetoothClass bc = ((BluetoothDevice)
- intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE))
- .getBluetoothClass();
- if (bc == null) return;
- final int deviceClass = bc.getDeviceClass();
- if ((deviceClass == BluetoothClass.Device.AUDIO_VIDEO_HEADPHONES)
- || (deviceClass == BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET)) {
- mIsHeadsetOn = action.equals(BluetoothDevice.ACTION_ACL_CONNECTED)
- || audioManager.isWiredHeadsetOn();
- }
- } else if (action.equals(AudioManager.ACTION_AUDIO_BECOMING_NOISY)) {
- mIsHeadsetOn = false;
- }
- if (mEffectDialog != null) {
- if (!mIsHeadsetOn && !isBtHeadsetConnected() && mEffectDialog.isShowing()) {
- mEffectDialog.dismiss();
- showHeadsetPlugToast();
- }
- }
- }
- };
-
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void setSystemUiVisibility(View rootView) {
if (ApiHelper.HAS_VIEW_SYSTEM_UI_FLAG_LAYOUT_STABLE) {
@@ -193,8 +122,6 @@ public class MovieActivity extends AbstractPermissionActivity {
initializeActionBar(intent);
mFinishOnCompletion = intent.getBooleanExtra(
MediaStore.EXTRA_FINISH_ON_COMPLETION, true);
- mPrefs = getSharedPreferences(getApplicationContext().getPackageName(),
- Context.MODE_PRIVATE);
mSavedInstanceState = savedInstanceState;
if (isPermissionGranted()) {
init(intent, rootView, savedInstanceState);
@@ -243,23 +170,11 @@ public class MovieActivity extends AbstractPermissionActivity {
// But for the performance (and battery), we remove the background here.
win.setBackgroundDrawable(null);
initMovieHooker(intent, savedInstanceState);
- if (!SystemProperties.getBoolean("persist.sys.galley.disable_audioeffects", false)) {
- // Determine available/supported effects
- final Descriptor[] effects = AudioEffect.queryEffects();
- for (final Descriptor effect : effects) {
- if (effect.type.equals(AudioEffect.EFFECT_TYPE_VIRTUALIZER)) {
- mVirtualizerSupported = true;
- } else if (effect.type.equals(AudioEffect.EFFECT_TYPE_BASS_BOOST)) {
- mBassBoostSupported = true;
- }
- }
- }
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mPlayer.onPrepared(mp);
- initEffects(mp.getAudioSessionId());
}
});
}
@@ -374,14 +289,6 @@ public class MovieActivity extends AbstractPermissionActivity {
});
}
- final MenuItem mi = menu.add(R.string.audio_effects);
- mi.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- onAudioEffectsMenuItemClick();
- return true;
- }
- });
if (isPermissionGranted()) {
refreshShareProvider(mMovieItem);
mMovieHooker.onCreateOptionsMenu(menu);
@@ -405,159 +312,6 @@ public class MovieActivity extends AbstractPermissionActivity {
return true;
}
- private void onAudioEffectsMenuItemClick() {
- if (!mIsHeadsetOn && !isBtHeadsetConnected()) {
- showHeadsetPlugToast();
- } else {
- LayoutInflater factory = LayoutInflater.from(this);
- final View content = factory.inflate(R.layout.audio_effects_dialog, null);
- final View title = factory.inflate(R.layout.audio_effects_title, null);
-
- boolean enabled = mPrefs.getBoolean(Key.global_enabled.toString(), false);
-
- mSwitch = (ToggleButton) title.findViewById(R.id.audio_effects_switch);
- mSwitch.setChecked(enabled);
- mSwitch.setButtonDrawable(enabled ?
- R.drawable.switch_thumb_activated : R.drawable.switch_thumb_off);
-
- mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- mSwitch.setButtonDrawable(isChecked ?
- R.drawable.switch_thumb_activated : R.drawable.switch_thumb_off);
- if(mBassBoostEffect != null) {
- mBassBoostEffect.setEnabled(isChecked);
- }
- if(mVirtualizerEffect != null) {
- mVirtualizerEffect.setEnabled(isChecked);
- }
- mBassBoostKnob.setEnabled(isChecked);
- mVirtualizerKnob.setEnabled(isChecked);
- }
- });
-
- mBassBoostKnob = (Knob) content.findViewById(R.id.bBStrengthKnob);
- mBassBoostKnob.setEnabled(enabled);
- mBassBoostKnob.setMax(BASSBOOST_MAX_STRENGTH);
- mBassBoostKnob.setValue(mPrefs.getInt(Key.bb_strength.toString(), 0));
- mBassBoostKnob.setOnKnobChangeListener(new Knob.OnKnobChangeListener() {
- @Override
- public void onValueChanged(Knob knob, int value, boolean fromUser) {
- if(mBassBoostEffect != null) {
- mBassBoostEffect.setStrength((short) value);
- }
- }
-
- @Override
- public boolean onSwitchChanged(Knob knob, boolean enabled) {
- return false;
- }
- });
-
- mVirtualizerKnob = (Knob) content.findViewById(R.id.vIStrengthKnob);
- mVirtualizerKnob.setEnabled(enabled);
- mVirtualizerKnob.setMax(VIRTUALIZER_MAX_STRENGTH);
- mVirtualizerKnob.setValue(mPrefs.getInt(Key.virt_strength.toString(), 0));
- mVirtualizerKnob.setOnKnobChangeListener(new Knob.OnKnobChangeListener() {
- @Override
- public void onValueChanged(Knob knob, int value, boolean fromUser) {
- if(mVirtualizerEffect != null) {
- mVirtualizerEffect.setStrength((short) value);
- }
- }
-
- @Override
- public boolean onSwitchChanged(Knob knob, boolean enabled) {
- return false;
- }
- });
-
- mEffectDialog = new AlertDialog.Builder(MovieActivity.this,
- AlertDialog.THEME_DEVICE_DEFAULT_LIGHT)
- .setCustomTitle(title)
- .setView(content)
- .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- SharedPreferences.Editor editor = mPrefs.edit();
- editor.putBoolean(Key.global_enabled.toString(), mSwitch.isChecked());
- editor.putInt(Key.bb_strength.toString(), mBassBoostKnob.getValue());
- editor.putInt(Key.virt_strength.toString(),
- mVirtualizerKnob.getValue());
- editor.commit();
- }
- })
- .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- boolean enabled = mPrefs.getBoolean(Key.global_enabled.toString(), false);
- if(mBassBoostEffect != null) {
- mBassBoostEffect.setStrength((short)
- mPrefs.getInt(Key.bb_strength.toString(), 0));
- mBassBoostEffect.setEnabled(enabled);
- }
- if(mVirtualizerEffect != null) {
- mVirtualizerEffect.setStrength((short)
- mPrefs.getInt(Key.virt_strength.toString(), 0));
- mVirtualizerEffect.setEnabled(enabled);
- }
- }
- })
- .setCancelable(false)
- .create();
- mEffectDialog.show();
- }
- }
-
- public void initEffects(int sessionId) {
- // Singleton instance
- if ((mBassBoostEffect == null) && mBassBoostSupported) {
- mBassBoostEffect = new BassBoost(0, sessionId);
- }
-
- if ((mVirtualizerEffect == null) && mVirtualizerSupported) {
- mVirtualizerEffect = new Virtualizer(0, sessionId);
- }
-
- if (mIsHeadsetOn || isBtHeadsetConnected()) {
- if (mPrefs.getBoolean(Key.global_enabled.toString(), false)) {
- if (mBassBoostSupported) {
- mBassBoostEffect.setStrength((short)
- mPrefs.getInt(Key.bb_strength.toString(), 0));
- mBassBoostEffect.setEnabled(true);
- }
- if (mVirtualizerSupported) {
- mVirtualizerEffect.setStrength((short)
- mPrefs.getInt(Key.virt_strength.toString(), 0));
- mVirtualizerEffect.setEnabled(true);
- }
- } else {
- if (mBassBoostSupported) {
- mBassBoostEffect.setStrength((short)
- mPrefs.getInt(Key.bb_strength.toString(), 0));
- }
- if (mVirtualizerSupported) {
- mVirtualizerEffect.setStrength((short)
- mPrefs.getInt(Key.virt_strength.toString(), 0));
- }
- }
- }
-
- }
-
- public void releaseEffects() {
- if (mBassBoostEffect != null) {
- mBassBoostEffect.setEnabled(false);
- mBassBoostEffect.release();
- mBassBoostEffect = null;
- }
- if (mVirtualizerEffect != null) {
- mVirtualizerEffect.setEnabled(false);
- mVirtualizerEffect.release();
- mVirtualizerEffect = null;
- }
- }
-
private Intent createShareIntent() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("video/*");
@@ -581,13 +335,6 @@ public class MovieActivity extends AbstractPermissionActivity {
return mMovieHooker.onOptionsItemSelected(item);
}
- public void showHeadsetPlugToast() {
- final Toast toast = Toast.makeText(getApplicationContext(), R.string.headset_plug,
- Toast.LENGTH_LONG);
- toast.setGravity(Gravity.CENTER, toast.getXOffset() / 2, toast.getYOffset() / 2);
- toast.show();
- }
-
@Override
public void onStart() {
if (!isPermissionGranted()) {
@@ -620,14 +367,6 @@ public class MovieActivity extends AbstractPermissionActivity {
super.onPause();
return;
}
- // Audio track will be deallocated for local video playback,
- // thus recycle effect here.
- releaseEffects();
- try {
- unregisterReceiver(mReceiver);
- } catch (IllegalArgumentException e) {
- // Do nothing
- }
mResumed = false;
if (mControlResumed && mPlayer != null) {
mControlResumed = !mPlayer.onPause();
@@ -638,21 +377,12 @@ public class MovieActivity extends AbstractPermissionActivity {
@Override
public void onResume() {
- if ((mVirtualizerSupported) || (mBassBoostSupported)) {
- final IntentFilter intentFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
- intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
- intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
- intentFilter.addAction(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
- registerReceiver(mReceiver, intentFilter);
- }
-
mResumed = true;
if (isPermissionGranted()) {
invalidateOptionsMenu();
if (!isKeyguardLocked() && !mControlResumed && mPlayer != null) {
mPlayer.onResume();
mControlResumed = true;
- //initEffects(mPlayer.getAudioSessionId());
}
enhanceActionBar();
super.onResume();
@@ -673,18 +403,6 @@ public class MovieActivity extends AbstractPermissionActivity {
}
}
- private boolean isBtHeadsetConnected() {
- BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- if (adapter != null)
- {
- if ((BluetoothProfile.STATE_CONNECTED == adapter.getProfileConnectionState(BluetoothProfile.HEADSET))
- || (BluetoothProfile.STATE_CONNECTED == adapter.getProfileConnectionState(BluetoothProfile.A2DP))) {
- return true;
- }
- }
- return false;
- }
-
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
@@ -697,7 +415,6 @@ public class MovieActivity extends AbstractPermissionActivity {
super.onDestroy();
return;
}
- releaseEffects();
mPlayer.onDestroy();
super.onDestroy();
mMovieHooker.onDestroy();
diff --git a/src/com/android/gallery3d/app/MoviePlayer.java b/src/com/android/gallery3d/app/MoviePlayer.java
index 8bf0d0dbe..7db8dcfa0 100755
--- a/src/com/android/gallery3d/app/MoviePlayer.java
+++ b/src/com/android/gallery3d/app/MoviePlayer.java
@@ -311,7 +311,6 @@ public class MoviePlayer implements
mHasPaused = true;
doStartVideo(true, mVideoPosition, mVideoLastDuration,false);
mVideoView.start();
- mActivityContext.initEffects(mVideoView.getAudioSessionId());
} else {
mTState = TState.PLAYING;
mFirstBePlayed = true;
@@ -604,7 +603,6 @@ public class MoviePlayer implements
}
if (start) {
mVideoView.start();
- mActivityContext.initEffects(mVideoView.getAudioSessionId());
}
//we may start video from stopVideo,
//this case, we should reset canReplay flag according canReplay and loop
@@ -1124,7 +1122,6 @@ public class MoviePlayer implements
mVideoView.stopPlayback();
mVideoView.setVisibility(View.INVISIBLE);
clearVideoInfo();
- mActivityContext.releaseEffects();
mMovieItem = next;
mActivityContext.refreshMovieInfo(mMovieItem);
doStartVideo(false, 0, 0);
@@ -1160,7 +1157,6 @@ public class MoviePlayer implements
mVideoView.setResumed(false);
mVideoView.setVisibility(View.INVISIBLE);
clearVideoInfo();
- mActivityContext.releaseEffects();
mFirstBePlayed = false;
mController.setCanReplay(true);
mController.showEnded();
diff --git a/src/com/android/gallery3d/ui/Knob.java b/src/com/android/gallery3d/ui/Knob.java
deleted file mode 100644
index cab7c6f8d..000000000
--- a/src/com/android/gallery3d/ui/Knob.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * Copyright (c) 2013, 2016, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package com.android.gallery3d.ui;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.RectF;
-import android.util.AttributeSet;
-import android.util.TypedValue;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-import java.lang.Math;
-
-import org.codeaurora.gallery.R;
-
-public class Knob extends FrameLayout {
- private static final int STROKE_WIDTH = 6;
- private static final float TEXT_SIZE = 0.20f;
- private static final float TEXT_PADDING = 0.31f;
- private static final float LABEL_PADDING = 0.05f;
- private static final float LABEL_SIZE = 0.09f;
- private static final float LABEL_WIDTH = 0.80f;
- private static final float INDICATOR_RADIUS = 0.38f;
-
- public interface OnKnobChangeListener {
- void onValueChanged(Knob knob, int value, boolean fromUser);
- boolean onSwitchChanged(Knob knob, boolean on);
- }
-
- private OnKnobChangeListener mOnKnobChangeListener = null;
-
- private float mProgress = 0.0f;
- private int mMax = 100;
- private boolean mOn = false;
- private boolean mEnabled = false;
-
- private int mHighlightColor;
- private int mLowlightColor;
- private int mDisabledColor;
-
- private final Paint mPaint;
-
- private final TextView mLabelTV;
- private final TextView mProgressTV;
-
- private final ImageView mKnobOn;
- private final ImageView mKnobOff;
-
- private float mLastX;
- private float mLastY;
- private boolean mMoved;
-
- private int mWidth = 0;
- private int mIndicatorWidth = 0;
-
- private RectF mRectF;
-
- public Knob(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
-
- TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Knob, 0, 0);
-
- String label;
- int foreground;
- try {
- label = a.getString(R.styleable.Knob_label);
- foreground = a.getResourceId(R.styleable.Knob_foreground, R.drawable.knob);
- } finally {
- a.recycle();
- }
-
- LayoutInflater li = (LayoutInflater)
- context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- li.inflate(R.layout.knob, this, true);
-
- Resources res = getResources();
- mHighlightColor = res.getColor(R.color.highlight);
- mLowlightColor = res.getColor(R.color.lowlight);
- mDisabledColor = res.getColor(R.color.disabled_knob);
-
- ((ImageView) findViewById(R.id.knob_foreground)).setImageResource(foreground);
- ((ImageView) findViewById(R.id.knob_foreground)).setAlpha(0.35f);
-
- mLabelTV = (TextView) findViewById(R.id.knob_label);
- mLabelTV.setText(label);
- mProgressTV = (TextView) findViewById(R.id.knob_value);
-
- mKnobOn = (ImageView) findViewById(R.id.knob_toggle_on);
- mKnobOff = (ImageView) findViewById(R.id.knob_toggle_off);
-
- mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- mPaint.setColor(mHighlightColor);
- mPaint.setStrokeWidth(STROKE_WIDTH);
- mPaint.setStrokeCap(Paint.Cap.ROUND);
- mPaint.setStyle(Paint.Style.STROKE);
-
- setWillNotDraw(false);
- }
-
- public Knob(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public Knob(Context context) {
- this(context, null);
- }
-
- public void setOnKnobChangeListener(OnKnobChangeListener l) {
- mOnKnobChangeListener = l;
- }
-
- public void setValue(int value) {
- if (mMax != 0) {
- setProgress(((float) value) / mMax);
- }
- }
-
- public int getValue() {
- return (int) (mProgress * mMax);
- }
-
- public void setProgress(float progress) {
- setProgress(progress, false);
- }
-
- private void setProgressText(boolean on) {
- if (on) {
- mProgressTV.setText((int) (mProgress * 100) + "%");
- } else {
- mProgressTV.setText("--%");
- }
- }
-
- private void setProgress(float progress, boolean fromUser) {
- if (progress > 1.0f) {
- progress = 1.0f;
- }
- if (progress < 0.0f) {
- progress = 0.0f;
- }
- mProgress = progress;
- setProgressText(mOn && mEnabled);
-
- invalidate();
-
- if (mOnKnobChangeListener != null) {
- mOnKnobChangeListener.onValueChanged(this, (int) (progress * mMax), fromUser);
- }
- }
-
- public void setMax(int max) {
- mMax = max;
- }
-
- public float getProgress() {
- return mProgress;
- }
-
- private void drawIndicator() {
- float r = mWidth * INDICATOR_RADIUS;
- ImageView view = mOn ? mKnobOn : mKnobOff;
- view.setTranslationX((float) Math.sin(mProgress * 2 * Math.PI) * r - mIndicatorWidth / 2);
- view.setTranslationY((float) -Math.cos(mProgress * 2 * Math.PI) * r - mIndicatorWidth / 2);
- }
-
- @Override
- public void setEnabled(boolean enabled) {
- mEnabled = enabled;
- setOn(enabled);
- }
-
- public void setOn(boolean on) {
- if (on != mOn) {
- mOn = on;
- }
- on = on && mEnabled;
- mLabelTV.setTextColor(on ? mHighlightColor : mDisabledColor);
- mProgressTV.setTextColor(on ? mHighlightColor : mDisabledColor);
- setProgressText(on);
- mPaint.setColor(on ? mHighlightColor : mDisabledColor);
- mKnobOn.setVisibility(on ? View.VISIBLE : View.GONE);
- mKnobOff.setVisibility(on ? View.GONE : View.VISIBLE);
- invalidate();
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- drawIndicator();
- if (mOn && mEnabled) {
- canvas.drawArc(mRectF, -90, mProgress * 360, false, mPaint);
- }
- }
-
- @Override
- protected void onSizeChanged(int w, int h, int oldW, int oldH) {
- int size = w > h ? h : w;
- mWidth = size;
- mIndicatorWidth = mKnobOn.getWidth();
-
- int diff;
- if (w > h) {
- diff = (w - h) / 2;
- mRectF = new RectF(STROKE_WIDTH + diff, STROKE_WIDTH,
- w - STROKE_WIDTH - diff, h - STROKE_WIDTH);
- } else {
- diff = (h - w) / 2;
- mRectF = new RectF(STROKE_WIDTH, STROKE_WIDTH + diff,
- w - STROKE_WIDTH, h - STROKE_WIDTH - diff);
- }
-
- mProgressTV.setTextSize(TypedValue.COMPLEX_UNIT_PX, size * TEXT_SIZE);
- mProgressTV.setPadding(0, (int) (size * TEXT_PADDING), 0, 0);
- mProgressTV.setVisibility(View.VISIBLE);
- mLabelTV.setTextSize(TypedValue.COMPLEX_UNIT_PX, size * LABEL_SIZE);
- mLabelTV.setPadding(0, (int) (size * LABEL_PADDING), 0, 0);
- mLabelTV.setLayoutParams(new LinearLayout.LayoutParams((int) (w * LABEL_WIDTH),
- LayoutParams.WRAP_CONTENT));
- mLabelTV.setVisibility(View.VISIBLE);
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- return true;
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- if (mOn) {
- mLastX = event.getX();
- mLastY = event.getY();
- getParent().requestDisallowInterceptTouchEvent(true);
- }
- break;
- case MotionEvent.ACTION_MOVE:
- if (mOn) {
- float x = event.getX();
- float y = event.getY();
- float center = mWidth / 2;
- if (mMoved || (x - center) * (x - center) + (y - center) * (y - center)
- > center * center / 4) {
- float delta = getDelta(x, y);
- setProgress(mProgress + delta / 360, true);
- mMoved = true;
- }
- mLastX = x;
- mLastY = y;
- }
- break;
- case MotionEvent.ACTION_UP:
- if (!mMoved) {
- if (mOnKnobChangeListener == null
- || mOnKnobChangeListener.onSwitchChanged(this, !mOn)) {
- if (mEnabled) {
- setOn(!mOn);
- invalidate();
- }
- }
- }
- mMoved = false;
- break;
- default:
- break;
- }
- return true;
- }
-
- private float getDelta(float x, float y) {
- float angle = angle(x, y);
- float oldAngle = angle(mLastX, mLastY);
- float delta = angle - oldAngle;
- if (delta >= 180.0f) {
- delta = -oldAngle;
- } else if (delta <= -180.0f) {
- delta = 360 - oldAngle;
- }
- return delta;
- }
-
- private float angle(float x, float y) {
- float center = mWidth / 2.0f;
- x -= center;
- y -= center;
-
- if (x == 0.0f) {
- if (y > 0.0f) {
- return 180.0f;
- } else {
- return 0.0f;
- }
- }
-
- float angle = (float) (Math.atan(y / x) / Math.PI * 180.0);
- if (x > 0.0f) {
- angle += 90;
- } else {
- angle += 270;
- }
- return angle;
- }
-}