我需要从IP摄像头获取mjpeg流,任何人都知道正确的方法吗?我google了一下,我找到了这个例子
http://www.anddev.org/mjpeg_on_android_anyone-t1871.html
但是当我试图从主要活动调用的另一个活动中获取流时,我一直被困住了 . 这里的代码:
主要活动
package com.test;
public class IntentTest extends Activity {
/** Called when the activity is first created. */
ListView myListView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myListView = (ListView)findViewById(R.id.listView);
final ArrayList<String> items = new ArrayList<String>();
items.add("00408C944B9A");
final ArrayAdapter<String> aa;
aa = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
items);
myListView.setAdapter(aa);
myListView.setOnItemClickListener(listClicked);
}
private OnItemClickListener listClicked = new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
// TODO Auto-generated method stub
Intent i = new Intent(IntentTest.this, OtherActivity.class);
i.putExtra("MAC", myListView.getItemAtPosition(position).toString());
startActivity(i);
}
};
}
第二项活动
package com.test;
import com.test.mjpeg.mjpegsample.MjpegView.*;
import com.test.parser.JSONParse;
public class OtherActivity extends Activity {
/** Called when the activity is first created. */
private MjpegView mv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
if (extras != null){
String mac = (String)extras.get("MAC");
Log.i("Other", "---->" + mac);
TextView tv = (TextView)findViewById(R.id.textView);
tv.setText(mac);
String URL = "myurl";
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
mv = new MjpegView(this);
setContentView(mv);
mv.setSource(MjpegInputStream.read(URL));
mv.setDisplayMode(MjpegView.SIZE_BEST_FIT);
mv.showFps(true);
}
}
public void onPause() {
super.onPause();
mv.stopPlayback();
}
}
3 回答
对于那些希望使用AsyncTask(从而使用Ice Cream Sandwich(ICS),4.0.4)的人,请参阅Android ICS and MJPEG using AsyncTask .
我不久前在网上找到了这段代码,也许对你有所帮助 .
MjpegSample Class
MjpegView Class
MjpegInputStream Class
如果您需要更多信息,请告诉我,我会以任何方式提供帮助 .
仅供参考:我没有写SimpleMjpegView,你可以找到更多最新的代码here
我有同样的问题,并尝试使用自定义Mjpeg查看器 . 虽然他们工作,但他们证明我不稳定和笨拙 .
我只是使用WebView . 在Android Studio上,只需拖放WebView即可 . 我的WebView不是覆盖整个屏幕,而是覆盖整个屏幕的一半 .
然后,在您的onCreate中最佳地适应视频:
如果使用Kotlin:
如果使用Java:
然后,点击按钮:
开始:
停止:
希望这可以帮助 .