Я надеюсь, что вы можете помочь мне с этим.
У меня есть база данных firebase, показанная в виде списка. (Работа)
Функциональность:
Когда я нажимаю на определенный элемент, я хочу начать видео, равное элементу списка, с новым намерением.
но когда я нажимаю на элемент, я не могу заставить воспроизведение видео работать.
Прямо сейчас это мой код.
MainActivity:
import android.content.Intent;
import android.nfc.Tag;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private DatabaseReference database;
private ListView listView;
private ArrayList<String> moves = new ArrayList<>( );
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
database = FirebaseDatabase.getInstance().getReference("name");
listView = (ListView) findViewById( R.id.listview );
final ArrayAdapter arrayAdapter = new ArrayAdapter( this, android.R.layout.simple_list_item_1, moves );
listView.setAdapter( arrayAdapter );
database.addChildEventListener( new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String value = dataSnapshot.getValue(String.class);
moves.add( value );
arrayAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
} );
listView.setOnItemClickListener( new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent( getApplicationContext(), video_preview.class );
intent.putExtra( "moves", moves.get( position ).toString() );
startActivity( intent );
}
} );
}
}
Мое новое намерение показано так.
Предварительный просмотр видео:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.VideoView;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
public class video_preview extends AppCompatActivity {
String move = "";
VideoView videoView;
MediaController mediaController;
TextView textView;
private DatabaseReference databasePath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_video_preview );
videoView = findViewById( R.id.videoView );
mediaController = new MediaController( this );
Intent intent = getIntent();
move = intent.getStringExtra( "moves" );
setTitle( move );
databasePath = FirebaseDatabase.getInstance().getReference( "path" );
databasePath.addChildEventListener( new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String value = dataSnapshot.getValue(String.class);
videoView.setVideoPath("android.resource://" + getPackageName() + "/" + value);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
} );
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.start();
}
}
Надеюсь, вы поможете мне с этим?
Спасибо за ваше время и пациентов.
С уважением