2016-07-29 27 views
2

Das Problem ist, dass der Sound nicht abgespielt wird.Warum Sound im MediaPlayer nicht abgespielt wird?

Wenn ich ausführen, um die Anwendung dieser Satz in (Android mointor) erscheinen "D/AbsListView: unregisterIRListener() aufgerufen wird"

der MainActivity.java Code

public class MainActivity extends AppCompatActivity { 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ArrayList<String> list = new ArrayList<String>(); 
     list.add("item1"); 


     //instantiate custom adapter 
     List adapter = new List(list, this); 

     //handle listview and assign adapter 
     ListView lView = (ListView)findViewById(R.id.listView); 
     lView.setAdapter(adapter); 
    } 

} 

der Liste. Java-Code:

public class List extends BaseAdapter implements ListAdapter { 
    private ArrayList<String> list = new ArrayList<String>(); 
    private Context context; 
    MediaPlayer mediaPlayer; 


    public List(ArrayList<String> list, Context context) { 
     this.list = list; 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return list.size(); 
    } 

    @Override 
    public Object getItem(int pos) { 
     return list.get(pos); 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View view = convertView; 
     if (view == null) { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.activity_list, null); 
     } 

     //Handle TextView and display string from your list 
     TextView listItemText = (TextView)view.findViewById(R.id.list_item_string); 
     listItemText.setText(list.get(position)); 

     //Handle buttons and add onClickListeners 

     Button addBtn = (Button)view.findViewById(R.id.add_btn); 


     addBtn.setOnClickListener(new View.OnClickListener(){ 


      @Override 
      public void onClick(View v) { 
        MediaPlayer.create(List.this.context, R.raw.people) 
         mediaPlayer.start(); 
       notifyDataSetChanged(); 
      } 
     }); 

     return view; 
    } 
} 
+0

geändert werden müssen, können Sie logcat zeigen? –

+0

Was meinst du mit "logcat" – abdelrhman

+0

Ich habe Antwort unten ... überprüfen –

Antwort

1

Try this:

@Override 
public void onClick(View v) { 
    mediaPlayer = MediaPlayer.create(context,R.raw.people); 
    mediaPlayer.start(); 
    notifyDataSetChanged(); 
} 
+0

mediaPlayer = MediaPlayer.create (dies, R.raw.people); Dieser Satz gibt einen Fehler und es funktioniert nicht – abdelrhman

+0

Was ist der Fehler? –

+0

Das Problem ist, dass die IDE (in List.java) diese Methode nicht auflösen kann mediaPlayer.create (this, R.raw.people); – abdelrhman

1

Sie können die folgende Methode verwenden, um einen Ton abzuspielen. Es kann vom Speicher oder von der URL vom Internet gespielt werden.

public void playAudio(String audioPath) { 
    try { 
     MediaPlayer mp = new MediaPlayer(); 
     mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     mp.setDataSource(audioPath); 
     mp.prepare(); 
     mp.start(); 
     Log.d(TAG, "is playing audio..."); 
    } catch (Exception e) { 
     Log.d(TAG, "cannot play audio: " + e.toString()); 
    } 
} 
+0

IDE kann nicht TAG lösen – abdelrhman

+0

@abdelrhman TAG ist nur einige zufällige Zeichenfolge Wert –

1

Ich glaube, Sie this zu context

addBtn.setOnClickListener(new View.OnClickListener(){ 


     @Override 
     public void onClick(View v) { 
      mediaPlayer.create(context,R.raw.people); 
      mediaPlayer.start(); 
      notifyDataSetChanged(); 
     } 
    }); 
+0

immer noch nicht funktioniert – abdelrhman

+0

Können Sie Protokoll anzeigen? –

+0

Es gibt kein Protokoll ... der Sound wird nicht abgespielt. Lies die Frage –