Skip to content

Instantly share code, notes, and snippets.

View Ayusch's full-sized avatar

Ayusch Jain Ayusch

View GitHub Profile
import React, { useState } from 'react';
import { StyleSheet, Text, View, Button, Dimensions, TouchableWithoutFeedback } from 'react-native';
import Modal from "react-native-modalbox";
import {verticalScale} from './Utils/ScreenUtils';
const {width, height } = Dimensions.get("window");
export default function App() {
const [modalVisible, setModalVisible] = useState(false);
const getModal = () =>{
return (
<Modal
class MainActivity : AppCompatActivity() {
lateinit var arFragment: CloudAnchorFragment
var cloudAnchor: Anchor? = null
enum class AppAnchorState {
NONE,
HOSTING,
HOSTED,
RESOLVING,
RESOLVED
}
fun onResolveOkPressed(dialogVal: String) {
val shortCode = dialogVal.toInt()
val cloudAnchorId = storageManager.getCloudAnchorID(this, shortCode)
val resolvedAnchor = arFragment.arSceneView.session?.resolveCloudAnchor(cloudAnchorId)
cloudAnchor(resolvedAnchor)
placeObject(arFragment, cloudAnchor!!, Uri.parse("model.sfb"))
snackbarHelper.showMessage(this, "Now resolving anchor...")
appAnchorState = AppAnchorState.RESOLVING
}
btn_resolve.setOnClickListener {
if (cloudAnchor != null) {
snackbarHelper.showMessageWithDismiss(this, "Please clear the anchor")
return@setOnClickListener
}
val dialog = ResolveDialogFragment()
dialog.setOkListener(this::onResolveOkPressed)
dialog.show(supportFragmentManager, "Resolve")
}
public class ResolveDialogFragment extends DialogFragment {
interface OkListener {
void onOkPressed(String dialogValue);
}
private OkListener okListener;
private EditText shortCodeField;
/** Sets a listener that is invoked when the OK button on this dialog is pressed. */
void setOkListener(OkListener okListener) {
this.okListener = okListener;
}
btn_clear.setOnClickListener {
cloudAnchor(null)
}
/** Helper class for managing on-device storage of cloud anchor IDs. */
public class StorageManager {
private static final String NEXT_SHORT_CODE = "next_short_code";
private static final String KEY_PREFIX = "anchor;";
private static final int INITIAL_SHORT_CODE = 142;
/** Gets a new short code that can be used to store the anchor ID. */
int nextShortCode(Activity activity) {
SharedPreferences sharedPrefs = activity.getPreferences(Context.MODE_PRIVATE);
int shortCode = sharedPrefs.getInt(NEXT_SHORT_CODE, INITIAL_SHORT_CODE);
// Increment and update the value in sharedPrefs, so the next code retrieved will be unused.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
arFragment = supportFragmentManager.findFragmentById(R.id.ar_fragment) as CloudAnchorFragment
arFragment.arSceneView.scene.addOnUpdateListener(this::onUpdateFrame)
....
}
fun onUpdateFrame(frameTime: FrameTime) {
checkUpdatedAnchor()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
arFragment.setOnTapArPlaneListener { hitResult, plane, _ ->
if (plane.type != Plane.Type.HORIZONTAL_UPWARD_FACING || appAnchorState != AppAnchorState.NONE) {
return@setOnTapArPlaneListener
}
val anchor = arFragment.arSceneView.session?.hostCloudAnchor(hitResult.createAnchor())
cloudAnchor(anchor)
appAnchorState = AppAnchorState.HOSTING
class MainActivity : AppCompatActivity() {
lateinit var arFragment: CloudAnchorFragment
var cloudAnchor: Anchor? = null
enum class AppAnchorState {
NONE,
HOSTING,
HOSTED,
RESOLVING,
RESOLVED
}