H.Shibata
unread,Mar 28, 2011, 9:56:40 PM3/28/11Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to 日本Androidの会
初めまして、H.Shibataと申します。
早速ですが、自分の現在の知識では解決が難しいので皆様のお力をお貸しください。
まず、代表的なアクティビティが二つありまして、MainActivityから動画のURLをインテントしVideoViewを実装したアクティビ
ティ
(以下VideoActivity)でURLを読み込みます。
そしてSDカードに保存してVideoViewでSDカードから再生というソースコードを書きました。
しかし、ここで問題がありまして、MainActivityからVideoActivityへの画面遷移で中々レイアウトが表示されないという事象が
発
生しました。
どうやら何も表示されてない時にSDカードへの書き込みが行われており、完了しだいVideoActivityのレイアウトが表示されている
ようです・・・。
URL読み込み前にダイアログを入れても表示はされず、VideoActivityのレイアウトが表示されてからダイアログは表示され一瞬で終
了しています。
なぜこのような事象が発生してしまうのか、ご教授お願いします。
下記がVideoActivityのソースコードになりますので、よろしくお願いします。
public class VideoActivity extends Activity implements OnClickListener
{
private ProgressDialog dialog;
private VideoView video;
private TextView text;
private Intent intent;
private File folder;
private File movie;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main2);
dialog = new ProgressDialog(this);
intent = getIntent();
String mp4Title = intent.getExtras().getString("mp4Title");
String Dogaurl = intent.getExtras().getString("url");
String title = intent.getExtras().getString("title");
text=(TextView)findViewById(R.id.tv2);
text.setText(title);
String status = Environment.getExternalStorageState();
if(status.equals(Environment.MEDIA_MOUNTED)){
String sdcard =
Environment.getExternalStorageDirectory().getPath();
folder = new File(sdcard, "VIDEO");
if (folder.exists() == false){
folder.mkdir();
}
movie = new File(folder, mp4Title);
if (!movie.exists()){
dialog.setTitle("接続中");
dialog.setMessage("動画を取得しています。");
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setCancelable(true);
dialog.show();
URL url;
int size;
byte[] w= new byte[1024];
HttpURLConnection con = null;
InputStream in = null;
FileOutputStream out = null;
try{
url = new URL(Dogaurl);
out = new FileOutputStream(movie);
con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.connect();
in = con.getInputStream();
while(true){
size = in.read(w);
if(size<=0) break;
out.write(w, 0, size);
}
in.close();
out.close();
con.disconnect();
}catch(Exception e){
}
}
}else{
new AlertDialog.Builder(this).setMessage("SDカードが必要で
す").setPositiveButton("OK", null).show();
}
video = (VideoView)findViewById(R.id.video);
video.requestFocus();
video.setMediaController(new MediaController(this));
try{
video.setVideoURI(Uri.fromFile(movie));
video.setOnPreparedListener(new
MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
dialog.dismiss();
video.start();
}
});
}catch(Exception e){
dialog.dismiss();
}
//タイトルバーのカスタマイズ
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
R.layout.custom_title);
Button returnBtn = (Button)findViewById(R.id.returnBtn);
returnBtn.setOnClickListener(this);
Button deletBtn = (Button)findViewById(R.id.deletBtn);
deletBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.returnBtn){
finish();
}else if(v.getId() == R.id.deletBtn){
movie.delete();
Toast.makeText(this, "SDカードから動画を削除します", Toast.LENGTH_SHORT).show();
finish();
}
}