这可能是很多人会为谁在即时串流intrested人的intresting主题从您的设备 到一个网络服务器.(初级Android/Java)我终于找到了一种如何从我的设备的相机直播到我的网络服务器(网站)的方法.在wifi网络上需要大约.在wifi网络上显示1帧/秒,它也适用于EDGE/3G网络.在这个主题/问题中,我想讨论新的技术,改进,关于直播的想法,因为我将与你分享我的(代码也很受欢迎.)
我的代码使用setOneShotPreviewCallback()重复从摄像头预览中获取快照,以调用onPreviewFrame().帧以YUV格式传送,因此raw2jpg()将其转换为jpeg编码器的32位ARGB.NV21是YUV平面格式.
应用程序调用getPicture(),并在私有字节数组mCurrentFrame中生成图像的jpeg数据并返回该数组.
在此之后,byteArray mCurrentFrame获取Base64Encoded并以HTTP POST方式与字符串值Base64和自己的ID代码一起发送到我的网络服务器,这样人们就无法向其发送另一个图像.在网络服务器上,它再次被解码并被放入文件test.jpg中.PHP和Javascript正在Web服务器上运行.PHP获取POST方法,JavaScript每750秒重新加载一次图像.这基本上就是它的工作原理.
现在,我对您的想法,改进以及您想要添加/询问的其他内容非常感兴趣.以下是我的一些问题:
1)带音频直播的最佳方法是什么?视频录制或我的方法+录音?
2)你将如何处理视频记录流?
3)您如何将音频流式传输到网络服务器?(主要目标)(使用Java,PHP和JavaScript)
4)我还计划向我添加典型的实时流媒体特征,例如当一个名人出现时,你可以在实时流媒体时显示他的名字,或者只是将你的sd目录中的图像添加到你的直播中.你也会解码它并覆盖图像,或者以某种方式将图像放在你的直播中吗?
这个主题主要针对问题,所以请对这里的一些人提供一些很好的帮助.因此我添加了50(woot!)代表的赏金.
真诚的,XverhelstX
有没有人有一个想法,链接,库,源代码,...如何将照片和图像(位图)转换为粗略的图片?我找不到任何有关如何做的好消息来源.
我发现这个链接如何以编程方式对图像进行卡通?关于如何以编程方式绘制图像,但我更喜欢将图像设置为草图.
我想制作一个Android程序,可以编程"转换"JPEG照片到粗略的图像.
我正在尝试根据本教程在我的应用程序中实现NotificationListenerService:http://www.kpbird.com/2013/07/android-notificationlistenerservice.html,但是在调用getActiveNotifications时我遇到了NullPointerException.
Caused by: java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1437)
at android.os.Parcel.readException(Parcel.java:1385)
at android.app.INotificationManager$Stub$Proxy.getActiveNotificationsFromListener(INotificationManager.java:500)
at android.service.notification.NotificationListenerService.getActiveNotifications(NotificationListenerService.java:149)
at com.rootsoft.rsnotificationservice.RSNotificationService.activeNot(RSNotificationService.java:85)
at com.rootsoft.rsnotificationservice.RSNotificationService.access$0(RSNotificationService.java:81)
at com.rootsoft.rsnotificationservice.RSNotificationService$1.onReceive(RSNotificationService.java:105)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:763)
... 9 more
Run Code Online (Sandbox Code Playgroud)
我正在向服务发送广播,该广播应生成所有通知的列表:
private void activeNot () {
List l = new List();
l.Initialize();
for (StatusBarNotification sbn : getActiveNotifications() ) { <---- Error happens here
l.Add(sbn);
}
Log.i("B4A", "List created.");
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个ToolBar并Recyclerview包裹在一个Coordinatorlayout. RecyclerView 填充了来自我们 api 的消息,并从底部堆叠。(就像一个聊天应用程序)
//Set the layout manager
LinearLayoutManager layoutManager = new LinearLayoutManager(requireContext());
layoutManager.setStackFromEnd(true);
layoutManager.setReverseLayout(true);
binding.listMessages.setLayoutManager(layoutManager);
Run Code Online (Sandbox Code Playgroud)
我想ReverseScrollBehavior通过覆盖AppBarLayout.ScrollingViewBehavior来反转它的行为来定义一个自定义。所以当我向上滚动时,工具栏会隐藏,当我向下滚动(到底部)时,工具栏会显示。
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list_messages"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
app:stackFromEnd="true"
app:reverseLayout="true"
app:layout_behavior="com.rootsoft.kot.utils.ReverseScrollBehavior" />
Run Code Online (Sandbox Code Playgroud)
我想为此使用ScrollingViewBehavior而不是覆盖onTouch
更新
我想要实现的是获得当前appbar_scrolling_view_behavior. 想象一下有一个聊天应用程序,其中最新的消息从底部开始。当你向上滚动时,我想隐藏工具栏。AppBarLayout 的当前情况是当您向上滚动时,工具栏会显示,而当您向下滚动时,它会隐藏。我的滚动标志是:app:layout_scrollFlags="scroll|enterAlways|snap"
我对android编程很新,但我学的很快.所以我在这里找到了一段有趣的代码:http://code.google.com/p/camdroiduni/source/browse/trunk/code/eclipse_workspace/camdroid/src/de/aes/camdroid/CameraView.java
它是关于从设备的相机到浏览器的实时流媒体.
但我想知道代码实际上是如何工作的.
这些是我想要了解的内容:
1)它们如何流式传输到webbrowser.我知道他们将index.html文件发送到设备的ip地址(在wifi上),该文件每秒重新加载页面.但他们如何使用套接字将index.html文件发送到所需的 IP地址?
2)http://code.google.com/p/camdroiduni/wiki/Status#save_pictures_frequently,他们在这里提到他们正在使用视频,但我仍然相信他们拍照并发送它们,因为我没有看到任何地方的媒体记录.
现在我的问题是他们如何继续发送并将这些图像保存到SD文件夹中(我认为).我认为这是用这个代码完成的,但它是如何工作的.与c.takepicture一样,需要很长时间才能保存并再次开始预览,因此不能选择直播.
public synchronized byte[] getPicture() {
try {
while (!isPreviewOn) wait();
isDecoding = true;
mCamera.setOneShotPreviewCallback(this);
while (isDecoding) wait();
} catch (Exception e) {
return null;
}
return mCurrentFrame;
}
private LayoutParams calcResolution (int origWidth, int origHeight, int aimWidth, int aimHeight) {
double origRatio = (double)origWidth/(double)origHeight;
double aimRatio = (double)aimWidth/(double)aimHeight;
if (aimRatio>origRatio)
return new LayoutParams(origWidth,(int)(origWidth/aimRatio));
else
return new LayoutParams((int)(origHeight*aimRatio),origHeight);
}
private void raw2jpg(int[] rgb, byte[] …Run Code Online (Sandbox Code Playgroud) 我一直在研究一个过时的Zxing库版本的旧项目,需要更新以修复Nexus 5x上的反向图像错误.我设法更新了库,但只支持纵向模式.
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
source = activity.getCameraManager().buildLuminanceSource(data,
width, height);
} else {
byte[] rotatedData = new byte[data.length];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++)
rotatedData[x * height + height - y - 1] = data[x + y
* width];
}
int tmp = width;
width = height;
height = tmp;
data = rotatedData;
source = activity.getCameraManager().buildLuminanceSource(data,
width, height);
}
Run Code Online (Sandbox Code Playgroud)
我现在面临着在我们的Nexus 5X设备上解码条形码的问题,我们的EAN-13条形码似乎在旋转,如下图所示. …
我正在寻找一种在现有图像上叠加图像的方法.
例如:
+ 
我在这里找到了一个很好的例子:使用一个Image元素的PNG叠加. 但我对这些有两个问题.
首先,我不希望尺寸彼此相等.例如(215*215在215*215).这是因为我的用户可以选择他们想要放置图像的位置.(上,左,下,右上)所以8个方向.
的第二问题是,在该例子中,只有2个图像被允许为叠加.我的用户(再次)将能够在其上放置多个图像.
我对Javascript和PHP有一点了解,所以如果你们(和女孩们)可以帮助我的话会很棒.
此致
我今天尝试使用Android Studio中的“重构->迁移到AndroidX”选项将当前项目迁移到AndroidX,每当尝试编译应用程序时,都会收到
程序类型已经存在:androidx.annotation.BoolRes
AGPBI:{“种类”:“错误”,“文本”:“程序类型已存在:androidx.annotation.BoolRes”,“源”:[{}],“工具”:“ D8”}:app:transformDexArchiveWithExternalLibsDexMergerForDebug失败:app:buildInfoGeneratorDebug失败:生成失败,发生异常。*出了什么问题:任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'的执行失败。
我曾经./gradlew app:dependencies获取过我的依赖项列表,但是似乎很多库都在使用新的androidx.annotation:annotation:1.0.0依赖项。
//Android
implementation "androidx.constraintlayout:constraintlayout:$constraintLayout"
implementation "androidx.cardview:cardview:$androidX"
implementation "androidx.recyclerview:recyclerview:$androidX"
implementation "androidx.annotation:annotation:1.0.0"
//Material
implementation "com.google.android.material:material:$material"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle"
//Room
implementation "androidx.room:room-runtime:$room"
annotationProcessor "androidx.room:room-compiler:$room"
Run Code Online (Sandbox Code Playgroud) 如何删除包含或不包含Java库INI4J的部分?
这不起作用
Wini ini = new Wini(File);
System.out.println(Integer.toString(Position));
ini.remove(Integer.toString(Position));
Run Code Online (Sandbox Code Playgroud)
我也尝试使用ConfigParser.