Вот мой манифест < /p>
`
< /code>
`
один из моих файлов Java < /p>
package malal.oogirde.oogirdemalal;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.Insets;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.WindowInsets;
import android.view.WindowInsetsController;
import android.widget.SeekBar;
import android.widget.TextView;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.AdView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.Toolbar;
import com.google.android.material.button.MaterialButton;
public class Datal extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private SeekBar audioSeekBar;
private Handler handler = new Handler();
private Runnable updateSeekBar;
private TextView tvCurrentTime, tvTotalTime;
AdView adView;
@Override
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences preferences = getSharedPreferences("settings", MODE_PRIVATE);
if (!preferences.contains("night_mode")) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
preferences.edit().putBoolean("night_mode", false).apply();
} else {
boolean isNight = preferences.getBoolean("night_mode", false);
AppCompatDelegate.setDefaultNightMode(isNight ? AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_NO);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_datal);
MobileAds.initialize(this, initializationStatus -> {});
adView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
// Ajouter ce code pour que l'appli ne prenne pas le plein ecran
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
getWindow().setDecorFitsSystemWindows(false);
WindowInsetsController controller = getWindow().getInsetsController();
if (controller != null) {
int nightModeFlags = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (nightModeFlags == Configuration.UI_MODE_NIGHT_YES) {
//
getWindow().setStatusBarColor(Color.BLACK);
controller.setSystemBarsAppearance(
0,
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
);
} else {
//
getWindow().setStatusBarColor(Color.WHITE);
controller.setSystemBarsAppearance(
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS,
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
);
}
}
findViewById(android.R.id.content).setOnApplyWindowInsetsListener((v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsets.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
}
// Toolbar
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Fii Ɗatal Diina ");
}
// Initialisation du MediaPlayer
mediaPlayer = MediaPlayer.create(this, R.raw.datal);
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
// Initialisation des vues
MaterialButton btnPlayPause = findViewById(R.id.btnPlayPause);
MaterialButton btnStop = findViewById(R.id.btnStop);
audioSeekBar = findViewById(R.id.audioSeekBar);
tvCurrentTime = findViewById(R.id.tvCurrentTime);
tvTotalTime = findViewById(R.id.tvTotalTime);
// Configuration de la SeekBar
audioSeekBar.setMax(mediaPlayer.getDuration());
tvTotalTime.setText(formatTime(mediaPlayer.getDuration()));
audioSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser && mediaPlayer != null) {
mediaPlayer.seekTo(progress);
tvCurrentTime.setText(formatTime(progress));
}
}
@Override public void onStartTrackingTouch(SeekBar seekBar) {}
@Override public void onStopTrackingTouch(SeekBar seekBar) {}
});
// Mise à jour de la SeekBar
updateSeekBar = new Runnable() {
@Override
public void run() {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
int currentPosition = mediaPlayer.getCurrentPosition();
audioSeekBar.setProgress(currentPosition);
tvCurrentTime.setText(formatTime(currentPosition));
handler.postDelayed(this, 500);
}
}
};
// Bouton Play/Pause
btnPlayPause.setOnClickListener(v -> {
if (mediaPlayer != null) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
btnPlayPause.setIconResource(android.R.drawable.ic_media_play);
handler.removeCallbacks(updateSeekBar);
} else {
mediaPlayer.start();
btnPlayPause.setIconResource(android.R.drawable.ic_media_pause);
handler.postDelayed(updateSeekBar, 0);
}
}
});
// Bouton Stop
btnStop.setOnClickListener(v -> {
if (mediaPlayer != null) {
mediaPlayer.pause();
mediaPlayer.seekTo(0);
btnPlayPause.setIconResource(android.R.drawable.ic_media_play);
handler.removeCallbacks(updateSeekBar);
audioSeekBar.setProgress(0);
tvCurrentTime.setText("00:00");
}
});
// Fin de lecture
mediaPlayer.setOnCompletionListener(mp -> {
btnPlayPause.setIconResource(android.R.drawable.ic_media_play);
audioSeekBar.setProgress(0);
tvCurrentTime.setText("00:00");
handler.removeCallbacks(updateSeekBar);
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
MenuItem toggleThemeItem = menu.findItem(R.id.action_toggle_theme);
int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (currentNightMode == Configuration.UI_MODE_NIGHT_YES) {
toggleThemeItem.setIcon(R.drawable.ic_light_mode);
toggleThemeItem.setTitle("Mode clair");
} else {
toggleThemeItem.setIcon(R.drawable.ic_dark_mode);
toggleThemeItem.setTitle("Mode sombre");
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_toggle_theme) {
boolean isNight = (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES;
AppCompatDelegate.setDefaultNightMode(isNight ? AppCompatDelegate.MODE_NIGHT_NO : AppCompatDelegate.MODE_NIGHT_YES);
SharedPreferences preferences = getSharedPreferences("settings", MODE_PRIVATE);
preferences.edit().putBoolean("night_mode", !isNight).apply();
recreate();
return true;
}
if (id == R.id.menu_share) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject here");
intent.putExtra(Intent.EXTRA_TEXT, "Aafu Oogirde Malal nde Cerno Samba Mombeya");
startActivity(Intent.createChooser(intent, "Senndir Oogirde Malal"));
return true;
}
if (id == R.id.apropos) {
startActivity(new Intent(this, Apropos.class));
return true;
}
if (id == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onPause() {
super.onPause();
handler.removeCallbacks(updateSeekBar);
// NE PAS mettre pause() ici : laisse la lecture continuer si elle est en cours
}
@Override
protected void onDestroy() {
super.onDestroy();
handler.removeCallbacks(updateSeekBar);
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
@Override
public void onBackPressed() {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
new AlertDialog.Builder(this)
.setTitle("Quitter la lecture ?")
.setMessage("La lecture audio est en cours. Voulez-vous vraiment quitter ?")
.setPositiveButton("Oui", (dialog, which) -> {
mediaPlayer.stop(); // ou pause(), selon ton choix
mediaPlayer.release();
mediaPlayer = null;
super.onBackPressed(); // quitter l'activité
})
.setNegativeButton("Non", null)
.show();
} else {
super.onBackPressed();
}
}
private String formatTime(int millis) {
int minutes = (millis / 1000) / 60;
int seconds = (millis / 1000) % 60;
return String.format("%02d:%02d", minutes, seconds);
}
}
< /code>
my xml < /p>
< /Code> И есть извлечение из logcat, когда я открываю приложение < /p>
Interstitial failed to load: Received error HTTP response code: 403
2025-07-15 08:06:34.563 1103-1103 Ads malal.oogirde.oogirdemalal I Ad failed to load : 3
2025-07-15 08:06:34.601 1103-1103 Ads malal.oogirde.oogirdemalal I Ad failed to load : 3
2025-07-15 08:06:35.520 1103-1103 Ads malal.oogirde.oogirdemalal I JS: The jsLoaded GMSG has been sent (https://googleads.g.doubleclick.net/mad ... 0.html:939)
2025-07-15 08:06:35.520 1103-1103 chromium malal.oogirde.oogirdemalal
Подробнее здесь: https://stackoverflow.com/questions/797 ... terstitial