diff --git a/app/build.gradle b/app/build.gradle index 31c1096..314a0f7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,12 +16,12 @@ android { } } - compileSdk 31 + compileSdk 32 defaultConfig { applicationId "fr.svpro.radiomercure" - minSdk 22 - targetSdk 31 + minSdk 26 + targetSdk 32 versionCode 120 versionName '1.2.0' @@ -44,9 +44,9 @@ android { dependencies { - implementation 'androidx.appcompat:appcompat:1.4.1' - implementation 'com.google.android.material:material:1.5.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.google.android.material:material:1.6.1' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' diff --git a/app/src/main/java/fr/svpro/radiomercure/MainActivity.java b/app/src/main/java/fr/svpro/radiomercure/MainActivity.java index 904276a..8b57c22 100644 --- a/app/src/main/java/fr/svpro/radiomercure/MainActivity.java +++ b/app/src/main/java/fr/svpro/radiomercure/MainActivity.java @@ -2,6 +2,7 @@ package fr.svpro.radiomercure; import android.Manifest; import android.annotation.SuppressLint; +import android.annotation.TargetApi; import android.app.AlertDialog; import android.app.Dialog; import android.app.DownloadManager; @@ -26,16 +27,22 @@ import android.webkit.URLUtil; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; +import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; +import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import androidx.core.app.ActivityCompat; +import androidx.core.view.GravityCompat; +import androidx.drawerlayout.widget.DrawerLayout; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.navigation.NavigationView; import com.google.android.material.snackbar.Snackbar; public class MainActivity extends AppCompatActivity { @@ -57,42 +64,65 @@ public class MainActivity extends AppCompatActivity { versionName = BuildConfig.VERSION_NAME; } - + //Navigation + private NavigationView navigationView; + private DrawerLayout drawerLayout; + private Toolbar toolbar; @SuppressLint({"SetJavaScriptEnabled", "WrongViewCast", "JavascriptInterface"}) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + getSupportActionBar().hide(); - final SwipeRefreshLayout refreshLayout = findViewById(R.id.refresh_layout); - refreshLayout.setColorSchemeColors(Color.BLUE); + //menu + navigationView = findViewById(R.id.navigation_drawer); - refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override - public void onRefresh() { + public boolean onNavigationItemSelected(MenuItem item) { + // Navigation drawer item click listener + switch (item.getItemId()) { + case R.id.live: + Toast.makeText(MainActivity.this, "Vous écoutez Radio Mercure en direct", Toast.LENGTH_SHORT).show(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + lectureAudio("https://live.radiomercure.fr/on-air/live"); + } else { + Toast.makeText(MainActivity.this, "Votre version d'Android n'est pas compatible", Toast.LENGTH_SHORT).show(); + } + break; - // your action when refresh layout swiped - web.clearCache(true); - reStart(); - refreshLayout.setRefreshing(false); + case R.id.tel: + Intent intent = new Intent(Intent.ACTION_DIAL); + intent.setData(Uri.parse("tel:" + NUMERO_TEL_RADIO)); + startActivity(intent); + break; + + case R.id.refresh: + web.clearCache(true); + reStart(); + break; + + case R.id.exit: + System.exit(0); + break; + } + + drawerLayout.closeDrawer(GravityCompat.START); + return true; } }); + //toolbar + toolbar = findViewById(R.id.toolBar); + drawerLayout = findViewById(R.id.drawer_layout); + toolbar.setTitle("Radio Mercure"); - fbtn_live = (FloatingActionButton) findViewById(R.id.fbtn_live); - fbtn_live.setOnClickListener(new View.OnClickListener() { - @RequiresApi(api = Build.VERSION_CODES.O) - @Override - public void onClick(View v) { - Snackbar.make(v, "Vous écoutez Radio Mercure en direct", Snackbar.LENGTH_LONG) - .setAction("Action", null).show(); - lectureAudio("https://live.radiomercure.fr/on-air/live"); - fbtn_live.setImageResource(android.R.drawable.ic_media_pause); - - } - }); + ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); + drawerLayout.addDrawerListener(toggle); + toggle.syncState(); //------Demande d'autorisation de désactiver l'optimisation de la batterie------// AlertDialog.Builder dialogOptBattery = new AlertDialog.Builder(this); @@ -211,51 +241,6 @@ public class MainActivity extends AppCompatActivity { } } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.option,menu); - return super.onCreateOptionsMenu(menu); - } - - @RequiresApi(api = Build.VERSION_CODES.O) - @SuppressLint("UseCompatLoadingForDrawables") - @Override - public boolean onOptionsItemSelected(@NonNull MenuItem item) { - int id = item.getItemId(); - switch (id){ - case R.id.refresh: - web.clearCache(true); - reStart(); - //web.reload(); - //Toast.makeText(this, "Rechargement...", Toast.LENGTH_SHORT).show(); - return true; - - case R.id.exit: - System.exit(0); - return true; - - case R.id.about: - - dialog.show(); - return true; - - case R.id.tel: - Intent intent = new Intent(Intent.ACTION_DIAL); - intent.setData(Uri.parse("tel:" + NUMERO_TEL_RADIO)); - startActivity(intent); - return true; - - //case R.id.live: - //lectureAudio("https://live.radiomercure.fr/on-air/live"); - //Toast.makeText(this, "Vous écoutez Radio Mercure en direct", Toast.LENGTH_SHORT).show(); - - //return true; - - default: - return super.onOptionsItemSelected(item); - } - } - @Override public void onBackPressed() { if (web.canGoBack()) { diff --git a/app/src/main/java/fr/svpro/radiomercure/MediaPlayerService.java b/app/src/main/java/fr/svpro/radiomercure/MediaPlayerService.java index 5d4dacf..53ac43e 100644 --- a/app/src/main/java/fr/svpro/radiomercure/MediaPlayerService.java +++ b/app/src/main/java/fr/svpro/radiomercure/MediaPlayerService.java @@ -62,7 +62,7 @@ public class MediaPlayerService extends Service implements MediaPlayer.OnComplet Log.d("MediaPlayer Error", "MEDIA ERROR SERVER DIED " + extra); break; case MediaPlayer.MEDIA_ERROR_UNKNOWN: - Toast.makeText(this, "Erreur inconnue", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, "Streaming indisponible, veuillez réessayer plus tard", Toast.LENGTH_SHORT).show(); Log.d("MediaPlayer Error", "MEDIA ERROR UNKNOWN " + extra); break; } diff --git a/app/src/main/res/drawable/logo_menu.png b/app/src/main/res/drawable/logo_menu.png new file mode 100644 index 0000000..22f9ed5 Binary files /dev/null and b/app/src/main/res/drawable/logo_menu.png differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 641ae95..75a4060 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,40 +1,52 @@ - + - + + - - + android:layout_height="wrap_content"> - + + + - - + android:layout_height="match_parent" + android:layout_gravity="start" + android:fitsSystemWindows="true" + app:headerLayout="@layout/drawer_header" + android:background="@color/white" + app:menu="@menu/menu_drawer"> - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/drawer_header.xml b/app/src/main/res/layout/drawer_header.xml new file mode 100644 index 0000000..e7a4308 --- /dev/null +++ b/app/src/main/res/layout/drawer_header.xml @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_drawer.xml b/app/src/main/res/menu/menu_drawer.xml new file mode 100644 index 0000000..c88bcea --- /dev/null +++ b/app/src/main/res/menu/menu_drawer.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/style.xml b/app/src/main/res/values/style.xml new file mode 100644 index 0000000..0037512 --- /dev/null +++ b/app/src/main/res/values/style.xml @@ -0,0 +1,5 @@ + + + Ouvrir le menu + Fermer le menu + \ No newline at end of file diff --git a/screenshots/logo-menu.png b/screenshots/logo-menu.png new file mode 100644 index 0000000..22f9ed5 Binary files /dev/null and b/screenshots/logo-menu.png differ