我正在创建一个具有异构布局的Android应用程序。
该应用程序有一个登录页面,用户通过输入其许可证密钥进行登录。验证登录后,用户将转移到下一个屏幕。
在下一个屏幕上,我们显示了一个滑块。
问题是我们想在一个滑块中显示图像和视频。因此,在图像之后可能会出现视频,或者在某些图像之后可能会出现视频。
现在真正的问题是滑块会跳过所有图像并仅显示视频。
我们希望以3秒的间隔显示图像,如果视频出现则应停止滑块并播放整个视频,然后继续下一张幻灯片。
以下是我们正在创建的应用的代码。
package com.cd.layout;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.MediaController;
import android.widget.RelativeLayout;
@SuppressLint("NewApi")
public class MainActivity extends Activity {
private static final int BUTTON_5 = 5;
List<String> image_ext = Arrays.asList("png","jpeg");
List<String> video_ext = Arrays.asList("wmv","mp4");
private int region = 1;
Bitmap bm;
String [] splits;
String [] media ;
ArrayList<String> media_path = new ArrayList<String>();
ArrayList<String> media_path1 = new ArrayList<String>();
ArrayList<String> media_type = new ArrayList<String>();
ArrayList<String> duration = new ArrayList<String>();
int p = 0 ;
String media_info [] = null;
String response_data = null;
int count = 0;
int i = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
generateView();
}
public static Bitmap loadBitmap(String URL, BitmapFactory.Options options) {
Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in, null, options);
Log.i("bitmap",bitmap.toString());
in.close();
} catch (IOException e1) {
}
return bitmap;
}
private static InputStream OpenHttpConnection(String strURL)
throws IOException {
InputStream inputStream = null;
URL url = new URL(strURL);
URLConnection conn = url.openConnection();
try {
HttpURLConnection httpConn = (HttpURLConnection)conn;
httpConn.setRequestMethod("GET");
httpConn.connect();
if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
inputStream = httpConn.getInputStream();
}
} catch (Exception ex) {
}
return inputStream;
}
private void generateView() {
final CompositeView View7 = new CompositeView(this);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
final BitmapFactory.Options bmOptions;
bmOptions = new BitmapFactory.Options();
final MediaController mediaController = new MediaController(this);
bmOptions.inSampleSize = 1;
if(region>0) //images/upload/videos/VID-20140111-WA0002.mp4=mp4=00:00:00
{
response_data = "images/upload/images/Penguins.jpg=jpeg=00:00:05,images/upload/images/Jellyfish.jpg=jpeg=00:00:05,images/upload/videos/VID-20140111-WA0002.mp4=mp4=00:00:00";
media = response_data.split(",");
for(String s : media)
{
media_info = s.split("=");
media_path.add(media_info[0]);
media_type.add(media_info[1]);
duration.add(media_info[2]);
}
for(p = 0 ; p<=media_type.size()-1; p++)
{
if(image_ext.contains(media_type.get(p)))
{
View7.getImageView().invalidate();
View7.getImageView().setVisibility(View.VISIBLE);
View7.getVideoView().setVisibility(View.GONE);
String url = "http://test.com/".concat(media_path.get(p)); //we have removed the live site URL which fetched the video and images and entered the dummy link
Log.i("Image Name",url);
final Bitmap bm = loadBitmap(url, bmOptions);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
View7.getImageView().setImageBitmap(bm);
View7.setId(BUTTON_5);
}
}, 50000);
View7.getImageView().setImageBitmap(bm);
View7.setId(BUTTON_5);
}
else
{
if(video_ext.contains(media_type.get(p)))
{
View7.getVideoView().invalidate();
View7.getVideoView().setVisibility(View.VISIBLE);
View7.getImageView().setVisibility(View.GONE);
String videoToPlay = "http://test.com/".concat(media_path.get(p)); //we have removed the live site URL which fetched the video and images and entered the dummy link
Log.i("Image Name",videoToPlay);
View7.getVideoView().setVideoURI(Uri.parse(videoToPlay));
View7.getVideoView().setMediaController(new MediaController(this));
View7.getVideoView().setFocusable(true);
View7.getVideoView().start();
}
}
}
region --;
}
final RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.main_layout);
ViewTreeObserver vto = mainLayout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressWarnings("deprecation")
@Override
public void onGlobalLayout() {
final int oneUnitWidth = mainLayout.getMeasuredWidth() / 8;
final int oneUnitHeight = mainLayout.getMeasuredHeight() / 4;
String str = "348:243:320:240:";
splits = str.split(":");
count = splits.length;
if(count!=0)
{
final RelativeLayout.LayoutParams weatherParams = new RelativeLayout.LayoutParams(
Integer.parseInt(splits[i]), Integer.parseInt(splits[i+1]));
weatherParams.setMargins(0, 2, 0, 2);
View7.setLayoutParams(weatherParams);
count = count - 2;
i = i + 2;
}
else
{
final RelativeLayout.LayoutParams weatherParams = new RelativeLayout.LayoutParams(
320, 240);
weatherParams.setMargins(0, 2, 0, 2);
View7.setLayoutParams(weatherParams);
}
ViewTreeObserver obs = mainLayout.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
}
});
mainLayout.addView(View7);
}
}
感谢任何帮助..!