如何根据微调器选择从原始文件夹生成视频?
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?
我想知道是否有一种方法可以在原始文件夹中生成要播放的视频,该文件夹取决于从两个微调器下拉菜单中 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?