2017-07-18 2 views
0

Ich bin ein Neuling in Android-Entwicklung.In meiner Musik-Player-App, wenn ich auf die Wiedergabe/Pause-Taste klicken, um das Lied anzuhalten, passiert nichts. Es scheint, als ob die Bildschaltfläche nicht anklickbar ist, da beim Berühren nichts passiert. Ich kann das Abspielen des Songs nicht unterbrechen. Ich habe alle mögliche Lösungen versucht, die auf Stapelüberlauf erwähnt werden, noch funktioniert es nicht. Kann jemand mir sagen, was ich falsch mache?Pause Taste nicht anklickbar in Musik-Player

XML-Datei:

<LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center_vertical" 
      android:orientation="horizontal" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
      android:weightSum="1"> 

      <RelativeLayout 
       android:layout_width="300dp" 
       android:layout_height="match_parent" 
       android:background="@android:color/holo_blue_bright"> 


       <ImageButton 
        android:id="@+id/btnPrevious" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_weight="2.40" 
        android:background="@null" 
        android:paddingLeft="10dp" 
        android:src="@drawable/btn_previous" /> 

       <ImageButton 
        android:id="@+id/btnPlay1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerInParent="true" 
        android:clickable="true" 
        android:background="@drawable/btn_play" /> 


       <ImageButton 
        android:id="@+id/btnNext" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@null" 
        android:paddingLeft="230dp" 
        android:src="@drawable/btn_next" /> 
      </RelativeLayout> 
     </LinearLayout> 

btn_play.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/download4" 
     android:state_enabled="false" /> 
    <item android:drawable="@drawable/az" 
     android:state_enabled="true" /> 
</selector> 

PlayListActivity.java:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_play_list); 

     mMediaPlayer = new MediaPlayer(); 
     ListView mListView = (ListView) findViewById(R.id.list); 

     mMusicList = getAudioList(); 

    ArrayAdapter<String> mAdapter = new ArrayAdapter<>(this, 
       android.R.layout.simple_list_item_1, mMusicList); 
     mListView.setAdapter(mAdapter); 

     mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
            long arg3) { 

       try { 
        playSong(mAudioPath[arg2]); 
       } catch (IllegalArgumentException e) { 
        e.printStackTrace(); 
       } catch (IllegalStateException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

      } 
     }); 
    } 

    private String[] getAudioList() { 
     final Cursor mCursor = getContentResolver().query(
       MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
       new String[]{MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DATA}, null, null, 
       "LOWER(" + MediaStore.Audio.Media.TITLE + ") ASC"); 

     int count = mCursor.getCount(); 

     String[] songs = new String[count]; 
     mAudioPath = new String[count]; 
     int i = 0; 
     if (mCursor.moveToFirst()) { 
      do { 
       songs[i] = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME)); 
       mAudioPath[i] = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)); 
       i++; 
      } while (mCursor.moveToNext()); 
     } 

     mCursor.close(); 

     return songs; 
    } 


    private void playSong(String path) throws IllegalArgumentException, 
      IllegalStateException, IOException { 

     setContentView(R.layout.activity_android_building_music_player); 
     Log.d("ringtone", "playSong :: " + path); 

     mMediaPlayer.reset(); 
     mMediaPlayer.setDataSource(path); 
//mMediaPlayer.setLooping(true); 
     mMediaPlayer.prepare(); 
     mMediaPlayer.start(); 
     acv(path); 
     abc(); 
    } 

    public void acv(String path) { 
     getInit(); 

     metaRetriver = new MediaMetadataRetriever(); 
     metaRetriver.setDataSource(path); 
     try { 
      art = metaRetriver.getEmbeddedPicture(); 
      Bitmap songImage = BitmapFactory.decodeByteArray(art, 0, art.length); 
      album_art.setImageBitmap(songImage); 
      album.setText(metaRetriver 
        .extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM)); 
      artist.setText(metaRetriver 
        .extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST)); 
     } catch (Exception e) { 
      album_art.setBackgroundColor(Color.GRAY); 
      album.setText("Unknown Album"); 
      artist.setText("Unknown Artist"); 
     } 

    } 

    public void getInit() { 
     album_art = (ImageView) findViewById(R.id.coverart1); 
     album = (TextView) findViewById(R.id.Album); 
     artist = (TextView) findViewById(R.id.artist_name); 
    } 


    public void abc(){ 
     ImageButton btnPlay1 = (ImageButton) findViewById(R.id.btnPlay1); 
     btnPlay1.setOnClickListener(
       new ImageButton.OnClickListener(){ 
        public void onClick(View v){ 
         if (mMediaPlayer.isPlaying()) { 
          mMediaPlayer.pause(); 
         } else { 
          mMediaPlayer.start(); 
         } 

        } 
       }); 
    } 

Antwort

0

Ihr Adapter tun Es ist nicht in der gleichen LayoutXML zu sehen, vielleicht gibt Ihre findViewById (R.id.btnPlay1) null zurück.

+0

das Recht scheint, dank ..can Sie mir helfen, dass Problem lösen? –

+0

Sie müssen die Schaltfläche von wo Sie es aufgeblasen haben –

0

Ihre Zuhörer es dazu ändern:

btnPlay1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Toast.makeText(Act.this, "test click", Toast.LENGTH_SHORT).show(); 
    } 
}); 
+0

seine immer noch nicht funktioniert, wird kein Text angezeigt, scheint der Button nicht anklickbar ist !! –

+0

Sie Schaltfläche ist in der Listenansicht? – Dory

+0

nein, es ist nicht ... es ist in einem anderen Layout als Listview und vielleicht ist das das verursachende Problem, aber es muss in einem anderen Layout sein –