如何根据微调器选择从原始文件夹生成视频?

How can I generate a video from raw folder based on spinner selection?

我想知道是否有一种方法可以在原始文件夹中生成要播放的视频,该文件夹取决于从两个微调器下拉菜单中 select 编辑的内容?我正在尝试为我的学校制作一个视频导航应用程序,要求用户 select 作为他们导航的起点和他们想要的 class 房间。到目前为止,我只有一个视频可以成功播放。任何帮助将不胜感激!

这是我的主要内容

public class 主要Activity 扩展 Activity {

public Spinner start, end;
private Button done;
public TextView start_display, end_display;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    addStartPoint();                                                    //Implements the start point spinner
    addEndPoint();                                                      //Implements the end point spinner
    start = (Spinner) findViewById(R.id.startingPoint_spinner);
    end = (Spinner) findViewById(R.id.endPoint_spinner);
    done=(Button)findViewById(R.id.done);
    done.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {                                   //Go to selected layout when done button is clicked
            Intent i = new Intent(MainActivity.this, SelectingItem.class);
            startActivity(i);
            start_display = (TextView)findViewById(R.id.txtStart);
            end_display = (TextView)findViewById(R.id.txtEnd);
            start = (Spinner) findViewById(R.id.startingPoint_spinner);
        };
    });
}

public void addStartPoint()
{
    Resources res = getResources();                                          //Refers to startpoint array created in strings.xml
    String[] startpoint = res.getStringArray(R.array.startpoint);
    }

public void addEndPoint()
{
    Resources res = getResources();                                         //Refers to endpoint array created in strings.xml
    String[] endpoint = res.getStringArray(R.array.endpoint);
}

public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

}

选择项目屏幕

public class SelectingItem 扩展 Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.selected_layout);
    VideoView videoView = (VideoView)this.findViewById(R.id.VideoView);
    MediaController mediaController=new MediaController(this);
    mediaController.setAnchorView(videoView);
    videoView.setMediaController(mediaController);
    String uri = "android.resource://" + getPackageName() + "/" + R.raw.meb2101;                //This line will need to be changed to an if/else statement for all routes
    videoView.setVideoURI(Uri.parse(uri));
    videoView.start();
}

}

strings.xml

<string name="app_name">FlemNav</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="title_activity_display_navigation">DisplayNavigationActivity</string>
<string name="title_activity_navigation_main">NavigationMain</string>
<string name="choose_starting_point">Choose Starting Point</string>
<string-array name="startpoint">
    <item>Main Entrance</item>
    <item>Electrical Wing</item>
    <item>Steel Centre</item>
    <item>Side Entrance</item>
    <item>Cafeteria</item>
    <item>Side Door</item>
    <item>New Building</item>
</string-array>
<string-array name="endpoint">
    <item>B2101</item>
    <item>B2102</item>
    <item>B2103</item>
    <item>B2104</item>
</string-array>

看来您只需将需要的数据添加到要发送到 SelectingItem 的意图中即可。

    public class MainActivity extends Activity {
        //.....................

            @Override
            public void onClick(View v) {                                   //Go to selected layout when done button is clicked
                String startText = start.getSelectedItem().toString();
                String endText = end.getSelectedItem().toString();

                Intent i = new Intent(MainActivity.this, SelectingItem.class);
                i.putExtra("start_selection", startText);
                i.putExtra("end_selection", endText);

                startActivity(i);

                /*  Not sure what's going on here... probably not needed
                start_display = (TextView)findViewById(R.id.txtStart);
                end_display = (TextView)findViewById(R.id.txtEnd);
                start = (Spinner) findViewById(R.id.startingPoint_spinner);
                */
            };
        });
    }

然后在你的 SelectingItem.java:

public class SelectingItem extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.selected_layout);

    Intent intent = this.getIntent();
    String startSelection = intent.getStringExtra("start_selection");
    String endSelection = intent.getStringExtra("end_selection");

    VideoView videoView = (VideoView)this.findViewById(R.id.VideoView);
    MediaController mediaController=new MediaController(this);
    mediaController.setAnchorView(videoView);
    videoView.setMediaController(mediaController);
    String uri = null;

    if ( startSelection.equals("Main Entrance") && endSelection.equals("B2101") ){
         uri = "android.resource://" + getPackageName() + "/" + R.raw.meb2101;                //This line will need to be changed to an if/else statement for all routes
    }
    else if ( startSelection.equals("Main Entrance") && endSelection.equals("B2102") ){
         uri = "android.resource://" + getPackageName() + "/" + R.raw.meb2102; 
    }
    //..... and so on......

    if (uri != null){
       videoView.setVideoURI(Uri.parse(uri));
       videoView.start();
    }
}

有关我在这里使用的内容的更多信息,请参阅这些帖子:

How to get Spinner value?

How do I get extra data from intent on Android?