我正在寻找用C#开发音频播放器,但想知道哪些库可用于播放.我正在寻找一个免费的库,允许播放大量的音频格式(例如mp3,wma,wav,ogg等).这几乎是我需要的基本功能.但是,如果我能够挑剔,那么可以在格式之间转换音频文件的库将会很方便.进行谷歌搜索我遇到了alvas.audio库,但它不是免费的.VLC库也不错,但我无法让它工作,我更愿意用dll封装我的应用程序,而不是让我的用户也在他们的机器上安装VLC软件.
感谢您提出任何建议或建议.
我目前有两个接受任何号码的文本框.我有一个文本块,它输入两个数字并计算平均值.
我想知道是否有办法将这个文本块绑定到两个文本框并使用自定义转换器来计算平均值?我目前正在捕获两个文本框上的文本更改事件并计算平均值,但我认为数据绑定会更有效,更容易.
所以这是我拥有的XAML:
<ItemsControl ItemsSource="{Binding Path=Groups}" ItemTemplateSelector="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=ListTemplateSelector}"/>
Run Code Online (Sandbox Code Playgroud)
这是我的ListTemplateSelector类:
public class ListTemplateSelector : DataTemplateSelector {
public DataTemplate GroupTemplate { get; set; }
public DataTemplate ItemTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
GroupList<Person> list = item as GroupList<Person>;
if (list != null && !list.IsLeaf)
return GroupTemplate;
return ItemTemplate;
}
}
Run Code Online (Sandbox Code Playgroud)
GroupTemplate数据模板本身引用了ListTemplateSelector,所以这就是我设置的原因.这是我可以放在一起的唯一递归黑客.但这不是我遇到的问题.
我的问题是,我想在IsLeaf属性更改时从ItemTemplate更改为GroupTemplate.这是第一次读取房产以来的第一次.但是一旦此属性更改,模板选择器就不会重新应用.现在,我可以使用触发器绑定到值并适当地设置项目模板,但我需要能够为每个项目设置不同的模板,因为它们可能处于不同的状态.
例如,假设我有一个像这样的组列表:
第1组:IsLeaf = false,因此template = GroupTemplate
第2组:IsLeaf = true,因此template = ItemTemplate
第3组:IsLeaf = false,因此template = GroupTemplate
一旦组1的IsLeaf属性更改为true,模板就需要自动更改为ItemTemplate.
编辑:
这是我的临时解决方案.有更好的方法吗?
<ItemsControl ItemsSource="{Binding Path=Groups}">
<ItemsControl.ItemTemplate> …
Run Code Online (Sandbox Code Playgroud) 我试过这个XAML:
<Slider Width="250" Height="25" Minimum="0" Maximum="1" MouseLeftButtonDown="slider_MouseLeftButtonDown" MouseLeftButtonUp="slider_MouseLeftButtonUp" />
Run Code Online (Sandbox Code Playgroud)
这个C#:
private void slider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
sliderMouseDown = true;
}
private void slider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
sliderMouseDown = false;
}
Run Code Online (Sandbox Code Playgroud)
sliderMouseDown变量永远不会更改,因为从不引发MouseLeftButtonDown和MouseLeftButtonUp事件.当用户在滑块上按下鼠标左键以将bool值设置为true时,如何使用此代码,并且当鼠标启动时,bool设置为false?
因此,根据Sun的J2EE文档(http://docs.sun.com/app/docs/doc/819-3669/bnani?l=en&a=view),"如果不需要标记属性,标记处理程序应该提供默认值."
我的问题是如何根据文档的描述定义默认值.这是代码:
<%@ attribute name="visible" required="false" type="java.lang.Boolean" %>
<c:if test="${visible}">
My Tag Contents Here
</c:if>
Run Code Online (Sandbox Code Playgroud)
显然,这个标签不会编译,因为它缺少tag指令和核心库导入.我的观点是,我希望"visible"属性默认为TRUE."标签属性不是必需的",因此"标签处理程序应提供默认值".我想提供一个默认值,所以我错过了什么?
任何帮助是极大的赞赏.
我不确定这是否可能,但我想我会问.首先,为了我的目的,我要求它在C#部分而不是XAML部分工作.这是我拥有的,它的工作原理:
public partial class MyClass1 : Window
{
public MyClass2 MyClass2Object { get; set; }
public MyClass1()
{
InitializeComponent();
MyClass2Object = new MyClass2();
Binding binding = new Binding();
binding.Source = MyClass2Object;
binding.Path = new PropertyPath("StringVar");
TextBoxFromXaml.SetBinding(TextBox.TextProperty, binding);
}
}
public class MyClass2
{
public string StringVar { get; set; }
public MyClass2()
{
StringVar = "My String Here";
}
}
Run Code Online (Sandbox Code Playgroud)
这将完全按照我的意愿绑定到我的StringVar属性.但是,我的问题是如果在设置绑定源时我有文字字符串"MyClass2Object.StringVar".我意识到我可以使用split函数将"MyClass2Object"和"StringVar"从较长的字符串中分离出来.然后我可以用拆分中的第二个结果替换新的PropertyPath行.但是,如何根据拆分的第一个结果替换binding.Source行.如果这是可能的,我将能够传递像"MyClass2Object.StringVar"这样的字符串并让TextBox的Text属性绑定到该属性,或者如果我传递像"AnotherClassObject.StringProperty"这样的字符串并且具有TextBox' ■Text属性绑定到名为AnotherClassObject的变量中实例化的对象的StringProperty属性.我希望我有意义.
我很好奇是否有人遇到过这个问题或有任何建议。我正在编写一个使用 MediaSessionCompat API 的媒体播放器。我经常确定播放媒体的当前位置并引发更改事件。我重新设置了播放状态,如下所示。但是,由于STATE_PLAYING
状态没有改变,Android 不会发出位置值改变的通知。特别是,当我连接了显示当前位置的蓝牙设备时,蓝牙设备仅在状态从STATE_PLAYING
变为时接收位置STATE_PAUSED
,反之亦然。见下面的代码:
public void setup() {
mediaSession = new MediaSessionCompat(context, Schema.TAG, component, pendingIntent);
mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
mediaSession.setActive(true);
updatePlaybackState();
}
public void updatePlaybackState() {
int state = isPlaying() ? PlaybackStateCompat.STATE_PLAYING : PlaybackStateCompat.STATE_PAUSED;
int ms = getCurrentPosition();
mediaSession.setPlaybackState(new PlaybackStateCompat.Builder()
.setState(state, ms, 1f)
.build());
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我updatePlaybackState
在当前位置改变时调用。如果我updatePlaybackState
按如下方式更改方法,那么它会按预期工作;不过,我不确定我是否应该这样做。
public void updatePlaybackState() {
int state = isPlaying() ? PlaybackStateCompat.STATE_PLAYING : PlaybackStateCompat.STATE_PAUSED;
int ms = getCurrentPosition();
mediaSession.setPlaybackState(new PlaybackStateCompat.Builder()
.setState(PlaybackStateCompat.STATE_NONE, ms, 1f)
.build());
mediaSession.setPlaybackState(new PlaybackStateCompat.Builder() …
Run Code Online (Sandbox Code Playgroud) 因此,对于我的普通Android项目,我在AndroidManifest.xml中具有以下内容:
<application android:name=".utilities.App" ...>
....
</application>
Run Code Online (Sandbox Code Playgroud)
然后我有我的App课:
public class App extends Application {
....
}
Run Code Online (Sandbox Code Playgroud)
然后,我有一个与Android项目关联的Android JUnit Test项目。一切都很好,我可以编写JUnit测试。但是,我试图在我的JUnit测试中运行代码覆盖,并且结果results肿。原因是因为调用和初始化了我的App类,就像我的应用程序实际上是在启动一样。我不希望在运行JUnit测试或代码覆盖率时执行自定义App类。我需要进行JUnit测试的任何设置都将使用适当的JUnit setup()
方法。有什么方法可以阻止它执行我的自定义App类,或者不将由于创建App类而执行的任何类/方法/行不计入代码覆盖率?
我试图在下一个Observable执行之前完整地完成一个Observable的工作(这意味着调用Complete函数)。我尝试了许多不同的方法,但是最接近的是:
function() {
observableA.subscribe(
(value) => { },
(err) => { },
() => {
createObservableB();
}
);
return observableB; // ????
}
Run Code Online (Sandbox Code Playgroud)
但我需要从此函数的createObservableB()返回结果。同样,直到对observableA中的每个单个值都进行了完全迭代之前,无法调用createObservableB。
谢谢你的帮助!
好的,所以我在WPF中有一个窗口.我在其中添加以下行:
xmlns:controls="clr-namespace:mCubed.Controls"
Run Code Online (Sandbox Code Playgroud)
这编译并运行得很好,但Visual Studio设计器给了我这个错误:
无法加载文件或程序集'mCubed,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一.该系统找不到指定的文件.
当我从Window中删除这一行时,它编译并运行得很好,Visual Studio设计师就像一个魅力!
我很困惑为什么那一行打破了设计师?如果我将以下行放在XAML文档的正文中,则会发生这种情况.
<controls:MyControl/>
Run Code Online (Sandbox Code Playgroud)
我所有的.cs文件都在同一个VS项目中.我有一个mCubed命名空间,其中包含我巧妙命名的mCubedWindow类.我在mCubed.Controls命名空间中定义了所有控件类.不要告诉我这是一个装配问题,所有我的文件都在同样的项目中!
所以我在WPF中制作了自己的轮播控件.我偶然发现了一个错误,并想知道是否有人知道如何解决这个问题,如方法调用或一系列方法调用或一些解决方法.这是我的旋转木马的打印屏幕:
Carousel Image http://img4.imageshack.us/img4/9599/carousele.jpg
正如你可以清楚地看到这个图像,我的鼠标指针超过按钮上写有16.但是上面写着18的按钮是一个蓝色的按钮,好像我的鼠标在那个按钮上.我还将工具提示设置为绑定到内容,工具提示说我的鼠标位于按钮上,其中包含18个.这应该是CORRECT行为,因为18是按钮z-index值.因此,上面有18的按钮应该是按钮的ON TOP,上面有16.但是,WPF没有以这种方式渲染画布,我想知道如何克服这个问题.我试过canvas.InvalidateArranage(),canvas.invalidateVisual(),canvas.UpdateLayout(),但我没有运气.画布的左侧显示它应该是什么样子,但即使z-index值正确,右侧也无法产生相同的结果,甚至这个截图证明了我的观点,这是WPF中的一个错误.
我是PhoneGap的新手,正在试图弄清楚如何使用捕获插件.我正在使用Cordova 3.5.0.我已成功运行以下命令:
cordova plugin add org.apache.cordova.media-capture
Run Code Online (Sandbox Code Playgroud)
我已经阅读了HTML页面中包含cordova.js或phonegap.js的示例.但是,Cordova创建的项目层次结构中不存在任何文件,因此我不知道如何包含它.我还读过这个文件是由Cordova在构建时自动注入的.因此,只要包含任何JavaScript文件,我只包含我自己的JavaScript文件.在JavaScript文件中,我有代码执行此操作以进行测试:
alert(navigator.device);
navigator.device.capture.captureImage(function(files) {
alert(files);
}, function(error) {
alert(error);
});
Run Code Online (Sandbox Code Playgroud)
第一个警报显示navigator.device未定义.我在android模拟器上运行这个应用程序.要运行该应用程序,我正在做:
cordova emulate android
Run Code Online (Sandbox Code Playgroud)
我认为我需要包含或设置一些东西才能使其正常工作.任何帮助是极大的赞赏.