我想了解socket是如何工作的,特别是我需要服务器端的一些代码示例来接收来自mediarecorder从设备发送的流.
非常感谢您的帮助.
我真正的最终目的是在设备上讲话并在PC上听一个方向.
我现在可以使用以下代码发送流:
String hostname = "192.168.1.10";
int port = 8000;
Socket socket = null;
try {
socket = new Socket(InetAddress.getByName(hostname), port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(pfd.getFileDescriptor());
try {
recorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
recorder.start();
Run Code Online (Sandbox Code Playgroud) 我正在努力从rss feed阅读音频,视频新闻.如何识别rss是用于新闻阅读器还是音频或视频?
这是一个视频Feed:http://feeds.cbsnews.com/CBSNewsVideo
这是文字Feed:http://indiatoday.feedsportal.com/c/33614/f/589699/index.rss
通过打开这个,我们可以理解它是视频还是文本.在解析此XML文件时,我们如何才能知道?
编辑:Xml for http://feeds.cbsnews.com/CBSNewsVideo
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.cbsnews.com/~d/styles/itemcontent.css"?><rss xmlns:s="http://www.cbsnews.com" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
<link>http://www.cbsnews.com</link>
<title>More from CBS News Video - CBS News</title>
<language>en-us</language>
<ttl>5</ttl>
<description>Read the latest CBS News Video headlines on CBS News, covering news stories, videos and pictures of world and US news, as well as news in politics, health, sports and business.</description>
<copyright>Your (optional) copyright message</copyright>
<pubDate>Fri, 07 Jun 2013 08:54:39 EDT</pubDate>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" …
Run Code Online (Sandbox Code Playgroud) 我想在Android手机上开发一个关于录音机的应用程序.我必须录制声音约30秒,然后停止并将录制的声音保存在图库中.如果你有空的话,任何人都可以发布代码吗?
我已经创建了一个PreferenceFragment
实现的子类CompoundButton.OnCheckedChangeListener
.我有一个包含Switch
(子类CompoundButton
)的首选项.这是我为交换机的值更改时创建的回调:
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mAppController.doSomething(isChecked);
Log.v("rose_tag", "hi");
}
Run Code Online (Sandbox Code Playgroud)
我在OnCreate
下面声明了偏好:
Switch mySwitch = (Switch) myView.findViewById(R.id.switch);
mySwitch.setEnabled(true);
mySwitch.setOnCheckedChangeListener(this);
Run Code Online (Sandbox Code Playgroud)
当视图首次打开时(回调中的断点被点击)调用回调,但没有日志打印,并且即使我打开和关闭开关,也不会再次调用回调.如何使这个回调工作?
我还尝试创建一个内联匿名监听器.我也尝试过使用一个简单Button
的onClick
监听器,但这也不起作用.
我的查询是,如果我打电话时另一方的接收方接听我的电话,我希望收到通知.是否可以使用Android SDK.
onCallStateChanged函数仅在Person从他的电话拨打号码(OFFHOOK)并且当呼叫接收者断开呼叫(IDLE)时被呼叫,但是没有State参数知道,另一个人是否已经接听了呼叫?
public class MyPhoneStateListener extends PhoneStateListener{
public void onCallStateChanged(int state,String incomingNumber){
Log.d("Checking---->",TelephonyManager.ACTION_PHONE_STATE_CHANGED);
}
}
Run Code Online (Sandbox Code Playgroud)
当在另一方收到电话时,Logcat仅提供以下信息:
01-19 19:33:30.633: DEBUG/CallNotifier(638): stopRing()... (OFFHOOK state)
01-19 19:33:30.662: DEBUG/Ringer(638): stopRing()...
01-19 19:33:30.694: DEBUG/Ringer(638): - stopRing: null mRingHandler!
01-19 19:33:31.256: DEBUG/PhoneApp(638): updateWakeState: callscreen true, dialer false, speaker false...
01-19 19:33:31.287: DEBUG/PhoneApp(638): updateWakeState: keepScreenOn = false (isRinging false, showingDisc false)
Run Code Online (Sandbox Code Playgroud) ATM我得到给定CONTACT_ID的编号和标签
String where = ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId;
Cursor c = ctx.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, where, null, null);
while (c.moveToNext()) {
String number = Tools.getString(c, CommonDataKinds.Phone.NUMBER);
String label = Tools.getString(c,CommonDataKinds.Phone.LABEL);
}
Run Code Online (Sandbox Code Playgroud)
Android可以将给定的数字标记为"默认号码".如何查询查询号码是否为默认号码?
我想将一个音频文件.mp3文件从android客户端发送到servlet服务器并将其保存在一个位置.如果我在该位置播放保存的.mp3文件,它应该播放.我的问题是有一种方法可以直接从客户端发送.mp3文件到服务器并在servlet中检索该mp3文件.
我的客户端代码如下:
package com.android.audiorecord;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import org.apache.commons.io.FileUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import com.android.audiofileplayer.StreamingMp3Player;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Base64;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
public class AudioRecordActivity extends Activity
{
private static final String LOG_TAG = "AudioRecordTest";
private static String mFileName = null;
private String url = "QRFileSaveServlet";
String result;
byte[] value;
String s;
byte[] filebyte,clientbyte;
String readString; …
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习Android USB主机/附件连接.我读Android设备可以行为usb主机或USB配件.因此我创建了两个项目,其中一个是usb主机项目,另一个是usb附件项目.我将这些项目安装到两个不同的Android设备上.其中一个有usb主机(Device A)项目,另一个有usb附件(Device B)项目.
我的问题是,我可以将usb主机项目连接到Device B.我可以看到有关设备的所有信息.但在配件项目(设备B)中我看不到有关设备A的任何事情.
manager.getAccessoryList()始终返回null.我的USB配件项目代码在这里.
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
for (UsbAccessory accessory : manager.getAccessoryList()) {
String list = " DESCRIPTION : " + accessory.getDescription() + " MODEL : " + accessory.getModel() + " MANUFACTURER : " + accessory.getManufacturer() + " SERIAL : " + accessory.getSerial();
Toast.makeText(this, list, Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud) 我知道这已被问过很多次了.我已经阅读了这里的大部分帖子和其他类似的网站.
http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/2931d21c-9ca8-4256-b213-915fad4c941b/
无济于事.这是环境
Windows Server 2008 R2 64位Visual Studio 2008 .Net Framework 3.5
这是我尝试过的
我使用代码进行了代理身份验证
WebRequest req = WebRequest.Create(requestUri + data);
req.Proxy = new System.Net.WebProxy(<ProxyURL>:<port>",true);
req.Proxy.Credentials = CredentialCache.DefaultCredentials;
WebResponse resp = req.GetResponse();
Run Code Online (Sandbox Code Playgroud)
这工作,但看到它减慢了应用程序,我了解到我可以编辑我所做的machine.config文件.它也有效!
<system.net>
<defaultProxy
useDefaultCredentials="true">
<proxy
proxyaddress="<proxyURL>:<port>"
bypassonlocal="True"/>
</defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)
至少一天或2.然后它开始失败.
然后我把它编辑成这个
<system.net>
<defaultProxy
useDefaultCredentials="true">
<proxy usesystemdefault="True"/>
</defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这将使用IE设置连接到代理但仍然无法正常工作.我也尝试过代码
WebProxy proxy = new WebProxy(<proxy>:<port>);
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri(requestUri + data), "BASIC", new NetworkCredential(<username>,<password>));
proxy.Credentials = myCache;
request.Proxy = proxy;
request.Method = "GET";
Run Code Online (Sandbox Code Playgroud)
这没用.
注意:我可以将machine.config文件复制到我的计算机(Win XP)并从那里运行.exe(没有代理代码),它工作正常. …
我创建了一个带有按钮的 Main.xml。它们都执行特定的操作,这一切都很好,但还应该有密码保护的按钮。所以我还创建了第二个 xml (popup.xml)。如果用户按下按钮,应该会弹出该信息。在 popup.xml 中,只有一个用于用户输入的文本字段和一个用于提交的按钮。
目前我可以按下按钮并出现弹出窗口,但我不知道如何将用户输入数据提交到主视图或仅通过按下按钮返回主视图。
public class BastiLauncherActivity extends Activity implements OnClickListener {
private Button b1;
// ...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// this b1 is a button in the main view where this pop up should appear
b1 = (Button) findViewById(R.id.b1Button);
b1.setOnClickListener(this);
// ...
}
@Override
public void onClick(View v) {
LayoutInflater inflater =
(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
PopupWindow pw = new PopupWindow(inflater.inflate(R.layout.popup, null,
false), 200, 300, true);
pw.setOutsideTouchable(true);
if (v == b1) {
// …
Run Code Online (Sandbox Code Playgroud)