0

Je veux créer un projet où j'ai deux onglets (CHANSONS et IMAGES) Si je clique sur l'onglet CHANSONS, je veux la liste complète des chansons stockées dans ma carte SD ou stockage interne. De même, lorsque je vais dans l'onglet Images, toutes les images sont visibles pour moi. Aussi sur cliquez sur le fichier de musique il devrait commencer à jouer de la musique et en cliquant sur l'image, il devrait afficher l'image.can quelqu'un s'il vous plaît me fournir le code entier? votre aide sera grandement appréciée.Importer un élément de la carte SD et tabview est utilisé

Répondre

0

Pour trouver tous les fichiers audio sur la carte SD, créez une méthode comme celui-ci

private void findAllMusicFiles() 
{  
    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
    String[] projection = { MediaStore.Audio.AudioColumns.DATA, MediaStore.Audio.AudioColumns.DISPLAY_NAME }; 
    Cursor audioCursor = getApplicationContext().getContentResolver().query(uri, projection, null, null, null); 

    if (audioCursor != null) { 
     while (audioCursor.moveToNext()) { 

      mediaNameList.add(audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.AudioColumns.DISPLAY_NAME))); 
      mediaPathList.add(audioCursor.getString(0)); 

     } 
     audioCursor.close(); 
    } 
} 

mediaNameList ne contient que les noms de fichiers pour afficher

mediaPathList contient chemin vers ces fichiers

à la fois ce sont des listes de tableaux

passer cette liste à un adaptateur et appeler onItemClickListener pour obtenir le chemin du fichier (par position) t vous voulez jouer

jouer morceau sélectionné en utilisant le lecteur multimédia, vous pouvez essayer ce qui suit (cette partie est encore en cours de développement, de sorte que vous pourriez obtenir quelques problèmes)

songList.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
       long arg3) { 
      // TODO Auto-generated method stub 
      //Toast.makeText(mContext, mediaNameList.get(position), Toast.LENGTH_LONG).show(); 

      setVolumeControlStream(AudioManager.STREAM_MUSIC); 
      try { 
       if(player.isPlaying()){ 
        player.stop(); 
        player.release(); 
        player=null; 
       }else{ 
        player.reset(); 
        player.setDataSource(mediaPathList.get(position)); 
        player.prepare(); 
        player.start(); 
       } 
      } catch (IllegalArgumentException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } catch (SecurityException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } catch (IllegalStateException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      }   

     } 
    }); 
} 

cliquez sur le nom de la chanson une fois pour démarrer en cours de lecture, cliquez sur la 2ème fois pour arrêter

+0

Merci, mais je pense que vous n'avez pas eu ma question. – user3608017

+0

En référence à votre premier code, dois-je faire un fichier XML ou edir mon fichier XML principal ?? – user3608017

+0

oui vous devrez faire du xml pour l'apparence de votre liste de noms de chansons et utiliser ce xml dans votre adaptateur. La liste de deux tableaux que je vous ai donné mediaNameList et mediaPathList fonctionnera comme données pour cette liste de chansons. De même, vous pouvez préparer votre liste d'images aussi. Ce que je vous ai donné est juste pour donner une idée de la logique de recherche à travers la carte SD entière et la logique pour lire et arrêter le fichier audio. – Kaustuv