我试图理解java中数据抽象和过程抽象之间的区别。
我理解过程抽象是利用接受形式参数的方法并向用户隐藏实现。这在语言中完全有意义PL/SQL,因为我可以选择在PL/SQL.
但我对数据抽象和过程抽象感到困惑,因为即使 Java 中的过程也是作为某个类的一部分实现的。每个类还可以有一些静态方法(public static),包中的每个其他类都可以使用它们。
请有人能明确区分这两者(就java而言)
我正在使用Android的MediaPlayer在我的应用程序中设置URL流。我尝试了几种不同的方法来处理退出代码和错误:(1,-2147483648)。
我尝试了几种不同的流,但是似乎无法使MediaPlayer正常工作。我曾考虑过要使用Google的ExoPlayer,但它要复杂一些,如果我丢失了某些东西,我不想跳船。
媒体播放器:
private MediaPlayer player;
String url = "http://199.180.75.118:80/stream"; //temp stream
private void initializeMediaPlayer() {
player = new MediaPlayer();
player.setAudioAttributes( new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build());
try {
player.setDataSource(url);
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
我还包括了android权限:
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
我试图使用原始的流类型(但是它引发了不建议使用的警告):
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
Run Code Online (Sandbox Code Playgroud)
因此,我改用了.setAudioAttributes(...)
我曾经尝试运行的方法,prepare()而不是prepareAsync()给出问题的标题,但仍然导致相同的错误。我没有运气就调查了实际的错误定义(Android MediaPlayer错误(1,-2147483648))。我认为这不是源问题,因为我尝试了其他多个流。如果我跳过了可能导致我的错误的关键内容,请告诉我。
编辑
如果有帮助,我一直在调查我的通话,发现MediaPlayer从未通话onPrepared(...) …
这是事件日志中不断出现的错误:
生成签名的 APK:构建 APK 时出错。您可以在“消息”视图中找到错误
消息中是这样的:
Android资源编译失败输出:
C:\Users\me\AndroidStudioProjects\SimpleCalculator2\app\src\main\res\mipmap-xxhdpi\ic_launcher.png: error: failed to read PNG signature: file does not start with PNG signature.
命令:
C:\Users\me\.gradle\caches\transforms-1\files-1.1\aapt2-3.2.0-4818971- windows.jar\6c29a9fd1a7f2d4d5ddcbb0cbfa348c6\aapt2-3.2.0-4818971-windows\aapt2.exe compile --legacy\-o\
C:\Users\me\AndroidStudioProjects\SimpleCalculator2\app\build\intermediates\res\merged\release \
C:\Users\me\AndroidStudioProjects\SimpleCalculator2\app\src\main\res\mipmap-xxhdpi\ic_launcher.png
Run Code Online (Sandbox Code Playgroud)
守护进程:AAPT2 aapt2-3.2.0-4818971-windows 守护进程 #0
我刚刚开始学习动画,我正在尝试在约束布局更改动画完成后添加另一个视图。我添加了一个监听器,用于约束布局发生变化的时间,但在动画开始时触发,而不是在动画完成后触发。
rootConstraintLayout.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
Log.d(TAG, "onLayoutChange: testing ");
}
});
Run Code Online (Sandbox Code Playgroud)
这是我用来更改布局的方法
private void changeExamplePageLayout() {
ConstraintSet constraintSetBeforeExample = new ConstraintSet();
ConstraintSet constraintSetAfterExample = new ConstraintSet();
constraintSetBeforeExample.clone(rootConstraintLayout);
constraintSetAfterExample.clone(getContext(), R.layout.example_fragment_sub_set);
TransitionManager.beginDelayedTransition(rootConstraintLayout);
constraintSetAfterExample.applyTo(rootConstraintLayout);
}
Run Code Online (Sandbox Code Playgroud)
任何指向我应该看的方向都将不胜感激。
有什么方法可以在 konva 对象中设置/获取数据吗?
就像jquery一样使用方法'data'来设置和获取信息,例如: $('#abc').data('id','123') !
我想将可绘制图像设置到文本的末尾,但它显示文本视图的末尾。
这是我的代码
<TextView
android:id="@+id/tv_overweight_messsage"
android:layout_width="wrap_content"
android:layout_height="wrap_content
android:layout_marginTop="@dimen/activity_marginVertical_Large"
android:gravity="center"
android:text="dvdmnvkdnxknb vcnbvcxmnbxm,cbn,m vnnxmndxvbhddbv svbhzv"
android:textColor="@color/required"
android:textSize="@dimen/textSize_small"
android:drawablePadding="@dimen/widget_padding"
android:drawableRight="@drawable/img_infobn"
android:visibility="gone"
app:mfafont="@string/font_Questrial_Regular"
tools:visibility="visible" />
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的数据类
data class SuggestionResponse(
val metadata: Metadata,
val response: Response
)
data class Response(
///blah blah
)
data class Metadata(
val timeleft: String,
val totalTime: String
)
Run Code Online (Sandbox Code Playgroud)
现在我需要将此数据转换为不同类型的数据对象。我想编写一个扩展函数来完成此任务。让函数的名字是你好
我想像这样调用这个扩展函数
suggestionResponse.hello()
我如何编写扩展功能?。任何帮助将不胜感激
根据https://developer.android.com/topic/libraries/architecture/viewmodel 上的“片段之间共享数据”部分,我们被告知在活动范围内创建一个 ViewModel 并在片段之间共享是要走的路.
这是在 ViewModel 中设置值的 Fragment
class MasterFragment : Fragment() {
private lateinit var itemSelector: Selector
private lateinit var model: SharedViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
model = activity?.run {
ViewModelProviders.of(this).get(SharedViewModel::class.java)
} ?: throw Exception("Invalid Activity")
itemSelector.setOnClickListener { item ->
// Update the UI
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是使用属性集的细节片段
class DetailFragment : Fragment() {
private lateinit var model: SharedViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
model = activity?.run {
ViewModelProviders.of(this).get(SharedViewModel::class.java)
} ?: throw Exception("Invalid Activity")
model.selected.observe(this, …Run Code Online (Sandbox Code Playgroud) android ×6
java ×2
abstraction ×1
apk ×1
data-class ×1
konvajs ×1
kotlin ×1
textview ×1
urlstream ×1