diff --git a/app/build.gradle b/app/build.gradle
index 0c809c7..8e6d8df 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -42,12 +42,6 @@ android {
coreLibraryDesugaringEnabled true
}
- java {
- toolchain {
- languageVersion = JavaLanguageVersion.of(17)
- }
- }
-
buildFeatures {
buildConfig true
}
diff --git a/app/src/main/java/com/helldivers/app/ActivityGame.java b/app/src/main/java/com/helldivers/app/ActivityGame.java
index e3ab84f..004705e 100644
--- a/app/src/main/java/com/helldivers/app/ActivityGame.java
+++ b/app/src/main/java/com/helldivers/app/ActivityGame.java
@@ -193,8 +193,7 @@ private static final String[] NAMES = {
private TextView tvCounter;
private ImageView ivStratagemIcon;
private LinearLayout sequenceContainer;
- private ImageButton btnUp, btnDown, btnLeft, btnRight;
- private android.widget.Button btnVolver;
+ private ImageButton btnUp, btnDown, btnLeft, btnRight, btnVolver;
private ProgressBar progressBar;
private ImageView ivFailure;
@@ -286,8 +285,7 @@ private static final String[] NAMES = {
arrowView.setLayoutParams(params);
arrowView.setText(String.valueOf(ARROW_CHARS.charAt(sequence[i])));
- arrowView.setTextSize(36);
- arrowView.setTextColor(Color.parseColor("#FFD700"));
+ arrowView.setTextColor(Color.parseColor("#FFFFFF"));
arrowView.setGravity(Gravity.CENTER);
arrowView.setBackgroundResource(R.drawable.arrow_white);
@@ -296,9 +294,6 @@ private static final String[] NAMES = {
}
private void onInputWithSound(int dir) {
- if (soundManager != null) {
- try { soundManager.playTone(dir); } catch (Exception e) {}
- }
onInput(dir);
}
@@ -307,6 +302,9 @@ private static final String[] NAMES = {
bloqueado = true;
if (dir == sequence[playerIndex]) {
+ if (soundManager != null) {
+ try { soundManager.playTone(dir); } catch (Exception e) {}
+ }
playerIndex++;
if (sequenceContainer != null && playerIndex <= sequence.length) {
@@ -344,6 +342,18 @@ private static final String[] NAMES = {
}
}
+ @Override
+ protected void onPause() {
+ super.onPause();
+ if (soundManager != null) soundManager.pause();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (soundManager != null) soundManager.resume();
+ }
+
@Override
protected void onDestroy() {
super.onDestroy();
diff --git a/app/src/main/java/com/helldivers/app/ActivityQR.java b/app/src/main/java/com/helldivers/app/ActivityQR.java
index 19839ca..7061d37 100644
--- a/app/src/main/java/com/helldivers/app/ActivityQR.java
+++ b/app/src/main/java/com/helldivers/app/ActivityQR.java
@@ -3,7 +3,7 @@ package com.helldivers.app;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
-import android.widget.Button;
+import android.widget.ImageButton;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import com.google.zxing.BarcodeFormat;
@@ -20,7 +20,7 @@ public class ActivityQR extends AppCompatActivity {
private SoundManager soundManager;
private ImageView qrImageView;
- private Button btnVolver;
+ private ImageButton btnVolver;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -38,7 +38,6 @@ public class ActivityQR extends AppCompatActivity {
btnVolver.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- soundManager.playButtonClick();
finish();
}
});
diff --git a/app/src/main/java/com/helldivers/app/MainActivity.java b/app/src/main/java/com/helldivers/app/MainActivity.java
index 74daba7..cfb3af3 100644
--- a/app/src/main/java/com/helldivers/app/MainActivity.java
+++ b/app/src/main/java/com/helldivers/app/MainActivity.java
@@ -35,18 +35,12 @@ public class MainActivity extends AppCompatActivity {
if (btnQrInstagram != null) {
btnQrInstagram.setOnClickListener(v -> {
- if (soundManager != null) {
- try { soundManager.playButtonClick(); } catch (Exception e) {}
- }
startActivity(new Intent(this, ActivityQR.class));
});
}
if (btnMinijuego != null) {
btnMinijuego.setOnClickListener(v -> {
- if (soundManager != null) {
- try { soundManager.playButtonClick(); } catch (Exception e) {}
- }
startActivity(new Intent(this, ActivityGame.class));
});
}
diff --git a/app/src/main/java/com/helldivers/app/SoundManager.java b/app/src/main/java/com/helldivers/app/SoundManager.java
index 6fbddbd..3e325d5 100644
--- a/app/src/main/java/com/helldivers/app/SoundManager.java
+++ b/app/src/main/java/com/helldivers/app/SoundManager.java
@@ -1,97 +1,68 @@
package com.helldivers.app;
import android.content.Context;
-import android.media.AudioManager;
-import android.media.ToneGenerator;
-import android.os.Handler;
-import android.os.Looper;
+import android.media.AudioAttributes;
+import android.media.SoundPool;
/**
- * SoundManager - Gestor de sonidos usando ToneGenerator
- * Compatible con API 18+, mas ligero que SoundPool para dispositivos de baja potencia
+ * SoundManager - Gestor de sonidos usando SoundPool para reproducir archivos de recursos
*/
public class SoundManager {
- private static final int VOLUME = 80; // 0-100
-
- private ToneGenerator toneGenerator;
- private Handler handler;
+ private SoundPool soundPool;
+ private int soundPop;
+ private int soundError;
private boolean enabled = true;
public SoundManager(Context context) {
- // ToneGenerator.STREAM_MUSIC para compatibilidad API 18+
- toneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, VOLUME);
- handler = new Handler(Looper.getMainLooper());
+ AudioAttributes audioAttributes = new AudioAttributes.Builder()
+ .setUsage(AudioAttributes.USAGE_GAME)
+ .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+ .build();
+
+ soundPool = new SoundPool.Builder()
+ .setMaxStreams(5)
+ .setAudioAttributes(audioAttributes)
+ .build();
+
+ // Cargar los sonidos desde res/raw
+ soundPop = soundPool.load(context, R.raw.pop, 1);
+ soundError = soundPool.load(context, R.raw.error, 1);
}
/**
- * Sonido de click de boton - tono corto y agudo
+ * Sonido de click de boton - reproduce pop.mp3
*/
public void playButtonClick() {
- if (!enabled || toneGenerator == null) return;
- // Tono DTMF 6 - sonido tipo boton tactil
- toneGenerator.startTone(ToneGenerator.TONE_DTMF_6, 80);
+ playPop();
}
/**
- * Sonido de exito - secuencia ascendente
+ * Sonido de exito
*/
public void playSuccess() {
- if (!enabled || toneGenerator == null) return;
- // Tono de confirmacion propositivo
- toneGenerator.startTone(ToneGenerator.TONE_PROP_ACK, 150);
+ // Por ahora no tenemos un sonido de éxito específico en raw,
+ // podríamos usar pop o dejarlo vacío si no se solicita.
}
/**
- * Sonido de fallo - tono bajo grave
+ * Sonido de fallo - reproduce error.mp3
*/
public void playFailure() {
- if (!enabled || toneGenerator == null) return;
- // Tono de error
- toneGenerator.startTone(ToneGenerator.TONE_PROP_NACK, 200);
+ if (!enabled || soundPool == null) return;
+ soundPool.play(soundError, 1.0f, 1.0f, 1, 0, 1.0f);
}
/**
- * Tono para direcciones del juego
- * Usa diferentes tonos DTMF para cada direccion
+ * Tono para direcciones del juego - reproduce pop.mp3 para cualquier dirección
*/
public void playTone(int direction) {
- if (!enabled || toneGenerator == null) return;
-
- int tone;
- switch (direction) {
- case 0: // UP
- tone = ToneGenerator.TONE_DTMF_2;
- break;
- case 1: // DOWN
- tone = ToneGenerator.TONE_DTMF_8;
- break;
- case 2: // LEFT
- tone = ToneGenerator.TONE_DTMF_4;
- break;
- case 3: // RIGHT
- tone = ToneGenerator.TONE_DTMF_6;
- break;
- default:
- tone = ToneGenerator.TONE_DTMF_0;
- }
- toneGenerator.startTone(tone, 100);
+ playPop();
}
- /**
- * Tono de inicio de secuencia
- */
- public void playSequenceStart() {
- if (!enabled || toneGenerator == null) return;
- toneGenerator.startTone(ToneGenerator.TONE_SUP_DIAL, 100);
- }
-
- /**
- * Tono de alerta/peligro
- */
- public void playAlert() {
- if (!enabled || toneGenerator == null) return;
- toneGenerator.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 150);
+ private void playPop() {
+ if (!enabled || soundPool == null) return;
+ soundPool.play(soundPop, 1.0f, 1.0f, 1, 0, 1.0f);
}
public void setEnabled(boolean enabled) {
@@ -102,26 +73,18 @@ public class SoundManager {
return enabled;
}
- /**
- * Stub para compatibilidad con ciclo de vida Activity
- * ToneGenerator no necesita pause/resume explicito
- */
public void pause() {
- // No-op: ToneGenerator se maneja automaticamente
+ if (soundPool != null) soundPool.autoPause();
}
- /**
- * Stub para compatibilidad con ciclo de vida Activity
- * ToneGenerator no necesita pause/resume explicito
- */
public void resume() {
- // No-op: ToneGenerator se maneja automaticamente
+ if (soundPool != null) soundPool.autoResume();
}
public void release() {
- if (toneGenerator != null) {
- toneGenerator.release();
- toneGenerator = null;
+ if (soundPool != null) {
+ soundPool.release();
+ soundPool = null;
}
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/arrow_white.xml b/app/src/main/res/drawable/arrow_white.xml
index 31503a9..b66339d 100644
--- a/app/src/main/res/drawable/arrow_white.xml
+++ b/app/src/main/res/drawable/arrow_white.xml
@@ -4,7 +4,7 @@
-
+
-
diff --git a/app/src/main/res/drawable/bg_helldivers_gradient.xml b/app/src/main/res/drawable/bg_helldivers_gradient.xml
index 648d31a..0589c16 100644
--- a/app/src/main/res/drawable/bg_helldivers_gradient.xml
+++ b/app/src/main/res/drawable/bg_helldivers_gradient.xml
@@ -1,13 +1,13 @@
-
+
-
diff --git a/app/src/main/res/drawable/bg_qr_container.xml b/app/src/main/res/drawable/bg_qr_container.xml
index 1f5a2dd..4b61f32 100644
--- a/app/src/main/res/drawable/bg_qr_container.xml
+++ b/app/src/main/res/drawable/bg_qr_container.xml
@@ -4,6 +4,6 @@
android:shape="rectangle">
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/btn_direction.xml b/app/src/main/res/drawable/btn_direction.xml
index 4b333b0..f4ce84e 100644
--- a/app/src/main/res/drawable/btn_direction.xml
+++ b/app/src/main/res/drawable/btn_direction.xml
@@ -5,7 +5,7 @@
-
-
+
@@ -42,7 +42,7 @@
-
+
-
diff --git a/app/src/main/res/drawable/btn_helldivers_primary.xml b/app/src/main/res/drawable/btn_helldivers_primary.xml
index d0d0f8d..e9d9df8 100644
--- a/app/src/main/res/drawable/btn_helldivers_primary.xml
+++ b/app/src/main/res/drawable/btn_helldivers_primary.xml
@@ -1,18 +1,18 @@
-
+
-
-
-
+
-
+
-
-
+
@@ -23,14 +23,14 @@
-
-
+
-
+
-
-
+
@@ -41,14 +41,14 @@
-
-
+
-
+
-
-
+
diff --git a/app/src/main/res/drawable/btn_helldivers_secondary.xml b/app/src/main/res/drawable/btn_helldivers_secondary.xml
index a255b86..18f624d 100644
--- a/app/src/main/res/drawable/btn_helldivers_secondary.xml
+++ b/app/src/main/res/drawable/btn_helldivers_secondary.xml
@@ -1,18 +1,18 @@
-
+
-
-
-
+
-
+
-
-
+
@@ -23,14 +23,14 @@
-
-
+
-
+
-
-
+
diff --git a/app/src/main/res/drawable/ic_back_arrow.xml b/app/src/main/res/drawable/ic_back_arrow.xml
new file mode 100644
index 0000000..4761ca5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_back_arrow.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_dpad_button.xml b/app/src/main/res/drawable/ic_dpad_button.xml
new file mode 100644
index 0000000..45c301b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_dpad_button.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_qr_code.xml b/app/src/main/res/drawable/ic_qr_code.xml
index d09e0de..cad0697 100644
--- a/app/src/main/res/drawable/ic_qr_code.xml
+++ b/app/src/main/res/drawable/ic_qr_code.xml
@@ -5,35 +5,35 @@
android:height="32dp"
android:viewportWidth="24"
android:viewportHeight="24"
- android:tint="#FFD700">
+ android:tint="#FFFFFF">
\ No newline at end of file
diff --git a/app/src/main/res/drawable/logo_helldivers_placeholder.xml b/app/src/main/res/drawable/logo_helldivers_placeholder.xml
index 406c49f..26dff09 100644
--- a/app/src/main/res/drawable/logo_helldivers_placeholder.xml
+++ b/app/src/main/res/drawable/logo_helldivers_placeholder.xml
@@ -14,7 +14,7 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/logo_helldivers_text.xml b/app/src/main/res/drawable/logo_helldivers_text.xml
index 677cc89..3551fee 100644
--- a/app/src/main/res/drawable/logo_helldivers_text.xml
+++ b/app/src/main/res/drawable/logo_helldivers_text.xml
@@ -8,7 +8,7 @@
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_game.xml b/app/src/main/res/layout/activity_game.xml
index 6663b46..d82c6a8 100644
--- a/app/src/main/res/layout/activity_game.xml
+++ b/app/src/main/res/layout/activity_game.xml
@@ -1,5 +1,6 @@
@@ -8,18 +9,6 @@
-
-
@@ -45,7 +34,7 @@
android:text=""
android:textSize="20sp"
android:textStyle="bold"
- android:textColor="#FFD700" />
+ android:textColor="#FFFFFF" />
+ app:tint="#FFFFFF"
+ android:src="@drawable/ic_dpad_button" />
+ app:tint="#FFFFFF"
+ android:src="@drawable/ic_dpad_button" />
+ app:tint="#FFFFFF"
+ android:src="@drawable/ic_dpad_button" />
+ app:tint="#FFFFFF"
+ android:src="@drawable/ic_dpad_button" />
-
+ android:contentDescription="Volver"
+ android:padding="10dp"
+ android:scaleType="centerInside"
+ android:src="@drawable/ic_back_arrow"
+ app:tint="#FFFFFF" />
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 3464782..bb1d670 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,5 +1,6 @@
@@ -16,7 +17,7 @@
android:contentDescription="Super Tierra"
android:adjustViewBounds="true"
android:maxWidth="280dp"
- android:tint="#FFD700" />
+ android:tint="#FFFFFF" />
@@ -49,7 +50,7 @@
android:paddingVertical="10dp"
android:text="@string/btn_qr_instagram"
android:textAllCaps="true"
- android:textColor="#FFD700"
+ android:textColor="#FFFFFF"
android:textSize="14sp" />
@@ -73,9 +74,10 @@
android:layout_column="1"
android:background="@drawable/btn_direction"
android:contentDescription="Up"
- android:rotation="-90"
+ android:rotation="0"
android:scaleType="centerInside"
- android:src="@drawable/stepforward" />
+ app:tint="#FFFFFF"
+ android:src="@drawable/ic_dpad_button" />
@@ -87,9 +89,10 @@
android:layout_column="0"
android:background="@drawable/btn_direction"
android:contentDescription="Left"
- android:rotation="180"
+ android:rotation="-90"
android:scaleType="centerInside"
- android:src="@drawable/stepforward" />
+ app:tint="#FFFFFF"
+ android:src="@drawable/ic_dpad_button" />
+ app:tint="#FFFFFF"
+ android:src="@drawable/ic_dpad_button" />
+ app:tint="#FFFFFF"
+ android:src="@drawable/ic_dpad_button" />
diff --git a/app/src/main/res/layout/activity_qr.xml b/app/src/main/res/layout/activity_qr.xml
index aa802b6..81bb398 100644
--- a/app/src/main/res/layout/activity_qr.xml
+++ b/app/src/main/res/layout/activity_qr.xml
@@ -1,33 +1,33 @@
+
+
-
-
\ No newline at end of file
diff --git a/app/src/main/res/raw/error.mp3 b/app/src/main/res/raw/error.mp3
new file mode 100644
index 0000000..536ec21
Binary files /dev/null and b/app/src/main/res/raw/error.mp3 differ
diff --git a/app/src/main/res/raw/pop.mp3 b/app/src/main/res/raw/pop.mp3
new file mode 100644
index 0000000..fa9448f
Binary files /dev/null and b/app/src/main/res/raw/pop.mp3 differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index e6662c2..26c8c7a 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,16 +1,16 @@
-
+
#000000
- #0D0D0D
- #1B1F25
- #121417
+ #006ab2
+ #005a96
+ #004b7d
- #FFD700
- #FFE135
+ #FFFFFF
+ #FFFFFF
#00BFFF
#1E90FF
#FF3B30
@@ -23,9 +23,9 @@
#C7C7CC
- #1B1F25
- #2C3138
- #FFD700
+ #004b7d
+ #003c64
+ #FFFFFF
#00BFFF
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0fe8873..a36b9cc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -7,7 +7,7 @@
Logo Helldivers 2
- Seguir en\nInstagram
+ INSTAGRAM
Estratagemas\nTraining
VOLVER
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 1bfc783..f45c346 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -5,7 +5,7 @@
- @color/helldivers_dark_secondary
- @color/helldivers_black
- - @color/helldivers_yellow
+ - @color/helldivers_white
- @color/helldivers_black
@@ -23,19 +23,19 @@
- @color/btn_bg_dark
- - @color/helldivers_yellow
+ - @color/helldivers_white